1 class Element extends Item
\r
11 @element_name: () ->
\r
12 @underscore(@single())
\r
15 @underscore(@plural())
\r
17 @path_name: (with_engine = false) ->
\r
20 @colum_structures: ->
\r
23 #>> https://gist.github.com/davidjbeveridge/3813724
\r
24 @xeach: (arr, func, index=0) ->
\r
25 if index < arr.length then [ func(arr[index], index), @xeach(arr, func, index + 1)... ] else []
\r
27 @camelize: (input) ->
\r
28 pieces = input.split(/[\W_-]/)
\r
29 @xeach(pieces, @capitalize).join("")
\r
31 @capitalize: (input) ->
\r
32 input.charAt(0).toUpperCase() + input.slice(1)
\r
34 @lowercase: (input) ->
\r
37 @underscore: (input) ->
\r
38 pieces = input.replace(/([A-Z])/g, '_$1').split(/[\W_-]/).filter (n) -> !!n
\r
39 @xeach(pieces, @lowercase ).join("_")
\r
41 @is_a_string: (str) ->
\r
42 if (str instanceof String) or (typeof str == "string")
\r
54 @_parts ? @_parts = []
\r
56 has_helper: (column_name) ->
\r
57 c = @constructor.colum_structures()
\r
58 if c[column_name] and c[column_name]['helper']
\r
64 @constructor.element_name()
\r
66 extend_column: () ->
\r
69 extend_element_name: () ->
\r
71 @get(@extend_column())
\r
75 find_configurations: (hash, key) ->
\r
76 if @constructor.is_a_string(hash[key])
\r
77 @find_configurations(hash, hash[key])
\r
84 set_new_index: (v) ->
\r
87 get_new_panel: () ->
\r
90 set_new_panel: (v) ->
\r
97 @_panel || @_new_panel
\r
99 tag_id: (c = null) ->
\r
100 'panel' + @tag_panel_id() + @tag_element_type() + @tag_element_id() + c
\r
102 field_tag_id: (f) ->
\r
105 tag_panel_id: () ->
\r
106 @get_panel().get('id') || '0'
\r
108 tag_element_id: () ->
\r
111 tag_element_type: () ->
\r
112 @constructor.element_name()
\r
114 tag_new_index: () ->
\r
117 path_name: (with_engine = false) ->
\r
118 @constructor.path_name(with_engine)
\r
120 form_template: (with_engine = false) ->
\r
121 @path_name(with_engine) + '/form'
\r
123 scenario_template: (with_engine = false) ->
\r
124 @path_name(with_engine) + '/scenario'
\r
126 element_face_template: (with_engine = false) ->
\r
127 @path_name(with_engine) + '/element_face'
\r
129 form_helper_template: (column_name) ->
\r
130 c = @constructor.colum_structures()
\r
131 if @has_helper(column_name)
\r
132 c[colum_name]['helper']
\r
136 tag_attributes: (column = null, opt = {}) ->
\r
138 id: @field_tag_id(column), panel_id: @tag_panel_id(),
\r
139 element_id: @tag_element_id(), element_type: @tag_element_type()
\r
144 field_tag_attributes: (column, no_attr, opt = {}) ->
\r
145 r = @tag_attributes(column)
\r
146 _.extend(r, {column: column, new_index: @tag_new_index(), no_attr: no_attr})
\r
150 #render element by body
\r
151 any_tag_attributes: (name = null, opt = {}) ->
\r
152 r = @tag_attributes(name)
\r
154 _.extend(r, {new_index: @tag_new_index()})
\r
158 select_tag_attributes: (selected, column, no_attr) ->
\r
161 {html: {selected: selected}},
\r
162 @field_tag_attributes(column, no_attr)
\r
165 tag_attr: (column = null, opt = {}) ->
\r
166 @tag_attributes(column, opt).to_attr
\r
168 field_tag_attr: (column, no_attr, opt = {}) ->
\r
169 @field_tag_attributes(column, no_attr, opt).to_attr
\r
171 any_tag_attr: (name = null, opt = {}) ->
\r
172 @any_tag_attributes(name, opt).to_attr
\r