Guest User

Untitled

a guest
Feb 20th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.98 KB | None | 0 0
  1. form = ActiveForm::Definition.new :form do |f|
  2. f.text_element :elem_a
  3. f.text_element :elem_b
  4. f.group_element :group, :class => 'specialgroup' do |g|
  5. g.text_element :elem_a, :style => 'color: red' do |e|
  6. e.define_internalize_filter { |value| value.join(', ') }
  7. e.define_externalize_filter { |value| value.split(/,\s+/) }
  8. end
  9. g.text_element :elem_b, :class => 'specialelem'
  10. g.group_element :group do |g|
  11. g.text_element :elem_a, :disabled => true
  12. g.text_element :elem_b, :readonly => true
  13. end
  14. end
  15. end
  16.  
  17. form.define_form :one do |f|
  18. f.text_element :sub_a
  19. f.text_element :sub_b
  20. end
  21.  
  22. form.define_form :two do |f|
  23. f.text_element :sub_a
  24. f.text_element :sub_b
  25. end
  26.  
  27. ActiveForm::Definition.define_container_wrapper do |builder, elem, render|
  28. builder.form(elem.element_attributes) {
  29. builder.table(:border => 1) {
  30. builder.thead { builder.tr { builder.th(elem.label, :colspan => 2) } }
  31. builder.tbody { elem.render_elements(builder) }
  32. }
  33. }
  34. end
  35.  
  36. ActiveForm::Element::Base.define_element_wrapper do |builder, elem, render|
  37. builder.tr(:class => 'label') { builder.td(:colspan => 2) { elem.render_label(builder) } }
  38. builder.tr(:id => "elem_#{elem.identifier}", :class => elem.css, :style => elem.style) { builder.td(:class => 'elem', :colspan => 2, &render) }
  39. end
  40.  
  41. ActiveForm::Element::Group.define_element_wrapper do |builder, elem, render|
  42. builder.tr { builder.td { builder.table(:border => 1, :style => 'background: orange; margin: 20px', &render) } }
  43. end
  44.  
  45. ActiveForm::Definition.define_element_wrapper do |builder, elem, render|
  46. style = StyleAttribute.new
  47. style << 'margin: 20px'
  48. style << 'display: none' if elem.hidden?
  49. builder.tr { builder.td { builder.table(:border => 1, :style => style, &render) } }
  50. end
  51.  
  52. form.update_values({ :elem_a => 'test', :elem_b => 'tester', :group => { :elem_a => ['one', 'two', 'three'] } })
  53.  
  54. puts form
  55.  
  56. <form action="#form" class="active_form" id="form" method="post">
  57. <table border="1">
  58. <thead>
  59. <tr>
  60. <th colspan="2">Form</th>
  61. </tr>
  62. </thead>
  63. <tbody>
  64. <tr class="label">
  65. <td colspan="2">
  66. <label for="form_elem_a">Elem A</label>
  67. </td>
  68. </tr>
  69. <tr class="elem_text" id="elem_form_elem_a">
  70. <td class="elem" colspan="2">
  71. <input id="form_elem_a" name="form[elem_a]" type="text" value="test"/>
  72. </td>
  73. </tr>
  74. <tr class="label">
  75. <td colspan="2">
  76. <label for="form_elem_b">Elem B</label>
  77. </td>
  78. </tr>
  79. <tr class="elem_text" id="elem_form_elem_b">
  80. <td class="elem" colspan="2">
  81. <input id="form_elem_b" name="form[elem_b]" type="text" value="tester"/>
  82. </td>
  83. </tr>
  84. <tr>
  85. <td>
  86. <table border="1" style="background: orange; margin: 20px">
  87. <tr class="label">
  88. <td colspan="2">
  89. <label for="form_group_elem_a">Elem A</label>
  90. </td>
  91. </tr>
  92. <tr class="elem_text" id="elem_form_group_elem_a" style="color: red">
  93. <td class="elem" colspan="2">
  94. <input id="form_group_elem_a" name="form[group][elem_a]" type="text" value="one, two, three"/>
  95. </td>
  96. </tr>
  97. <tr class="label">
  98. <td colspan="2">
  99. <label for="form_group_elem_b">Elem B</label>
  100. </td>
  101. </tr>
  102. <tr class="specialelem" id="elem_form_group_elem_b">
  103. <td class="elem" colspan="2">
  104. <input id="form_group_elem_b" name="form[group][elem_b]" type="text"/>
  105. </td>
  106. </tr>
  107. <tr>
  108. <td>
  109. <table border="1" style="background: orange; margin: 20px">
  110. <tr class="label">
  111. <td colspan="2">
  112. <label class="inactive" for="form_group_group_elem_a">Elem A</label>
  113. </td>
  114. </tr>
  115. <tr class="elem_text disabled" id="elem_form_group_group_elem_a">
  116. <td class="elem" colspan="2">
  117. <input disabled="disabled" id="form_group_group_elem_a" name="form[group][group][elem_a]" type="text"/>
  118. </td>
  119. </tr>
  120. <tr class="label">
  121. <td colspan="2">
  122. <label class="inactive" for="form_group_group_elem_b">Elem B</label>
  123. </td>
  124. </tr>
  125. <tr class="elem_text readonly" id="elem_form_group_group_elem_b">
  126. <td class="elem" colspan="2">
  127. <input id="form_group_group_elem_b" name="form[group][group][elem_b]" readonly="readonly" type="text"/>
  128. </td>
  129. </tr>
  130. </table>
  131. </td>
  132. </tr>
  133. </table>
  134. </td>
  135. </tr>
  136. <tr>
  137. <td>
  138. <table border="1" style="margin: 20px">
  139. <tr class="label">
  140. <td colspan="2">
  141. <label for="form_one_sub_a">Sub A</label>
  142. </td>
  143. </tr>
  144. <tr class="elem_text" id="elem_form_one_sub_a">
  145. <td class="elem" colspan="2">
  146. <input id="form_one_sub_a" name="form[one][sub_a]" type="text"/>
  147. </td>
  148. </tr>
  149. <tr class="label">
  150. <td colspan="2">
  151. <label for="form_one_sub_b">Sub B</label>
  152. </td>
  153. </tr>
  154. <tr class="elem_text" id="elem_form_one_sub_b">
  155. <td class="elem" colspan="2">
  156. <input id="form_one_sub_b" name="form[one][sub_b]" type="text"/>
  157. </td>
  158. </tr>
  159. </table>
  160. </td>
  161. </tr>
  162. <tr>
  163. <td>
  164. <table border="1" style="margin: 20px">
  165. <tr class="label">
  166. <td colspan="2">
  167. <label for="form_two_sub_a">Sub A</label>
  168. </td>
  169. </tr>
  170. <tr class="elem_text" id="elem_form_two_sub_a">
  171. <td class="elem" colspan="2">
  172. <input id="form_two_sub_a" name="form[two][sub_a]" type="text"/>
  173. </td>
  174. </tr>
  175. <tr class="label">
  176. <td colspan="2">
  177. <label for="form_two_sub_b">Sub B</label>
  178. </td>
  179. </tr>
  180. <tr class="elem_text" id="elem_form_two_sub_b">
  181. <td class="elem" colspan="2">
  182. <input id="form_two_sub_b" name="form[two][sub_b]" type="text"/>
  183. </td>
  184. </tr>
  185. </table>
  186. </td>
  187. </tr>
  188. </tbody>
  189. </table>
  190. </form>
Add Comment
Please, Sign In to add comment