it-logica-application-backbone 1.1.8 → 1.2.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.
- data/VERSION +1 -1
- data/app/assets/javascripts/backbone_js/bootstrap_modal.js +234 -0
- data/app/assets/javascripts/backbone_js/ladas_breadcrumb.js.coffee +15 -2
- data/app/assets/javascripts/backbone_js/ladas_editable_table_aligner.js.coffee +243 -0
- data/app/assets/javascripts/backbone_js/ladas_editable_table_builder.js.coffee +341 -0
- data/app/assets/javascripts/backbone_js/ladas_editable_table_modal_dialog.js.coffee +93 -0
- data/app/assets/javascripts/backbone_js/ladas_functions.js +8 -0
- data/app/assets/javascripts/backbone_js/ladas_saving.js +6 -0
- data/app/assets/javascripts/backbone_js/ladas_table_builder.js.coffee +1 -1
- data/app/assets/stylesheets/backbone_css/bootstrap_modal.css +139 -0
- data/app/assets/stylesheets/backbone_css/design.css +1 -1
- data/app/assets/stylesheets/backbone_css/editable_tables.css.scss +108 -0
- data/app/views/helpers/editable_table/_build_ajax_callback_code.html.erb +3 -0
- data/app/views/helpers/editable_table/_build_table.html.erb +128 -0
- data/app/views/helpers/editable_table/_build_table_data.html.erb +14 -0
- data/app/views/helpers/editable_table/_build_table_filter.html.erb +70 -0
- data/app/views/helpers/editable_table/_build_table_header.html.erb +136 -0
- data/app/views/helpers/editable_table/_build_table_pager.html.erb +31 -0
- data/app/views/helpers/editable_table/_build_table_text_description.html.erb +66 -0
- data/app/views/helpers/editable_table/_build_table_wrapper.html.erb +106 -0
- data/it-logica-application-backbone.gemspec +16 -2
- data/lib/model_mixins/table_builder_class_methods.rb +49 -0
- data/lib/table_settings/table_action.rb +5 -0
- data/lib/table_settings/table_column.rb +11 -0
- data/lib/view_mixins/table.rb +5 -0
- metadata +29 -15
@@ -0,0 +1,341 @@
|
|
1
|
+
class EditableTableBuilder
|
2
|
+
@render_tbody: (obj) ->
|
3
|
+
EditableTableBuilder.obj = obj
|
4
|
+
|
5
|
+
EditableTableBuilder.html = ""
|
6
|
+
|
7
|
+
EditableTableBuilder.make_table()
|
8
|
+
|
9
|
+
|
10
|
+
return EditableTableBuilder.html
|
11
|
+
|
12
|
+
|
13
|
+
@update_rows: (obj) ->
|
14
|
+
EditableTableBuilder.obj = obj
|
15
|
+
row_count = 0
|
16
|
+
for row in EditableTableBuilder.obj.data
|
17
|
+
do (row) ->
|
18
|
+
EditableTableBuilder.html = ""
|
19
|
+
row_count += 1
|
20
|
+
|
21
|
+
# load and render new row
|
22
|
+
EditableTableBuilder.add_row_checkboxes(row, row_count)
|
23
|
+
EditableTableBuilder.add_row_functions(row, row_count)
|
24
|
+
EditableTableBuilder.add_row_columns(row, row_count)
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
row_color = ""
|
29
|
+
if EditableTableBuilder.obj.row_colors?
|
30
|
+
if EditableTableBuilder.obj.row_colors[row.row_id]?
|
31
|
+
row_color = EditableTableBuilder.obj.row_colors[row.row_id]["color"]
|
32
|
+
row_background_color = EditableTableBuilder.obj.row_colors[row.row_id]["background_color"]
|
33
|
+
|
34
|
+
# update row
|
35
|
+
$('.centerContainer tr[data-row-id="' + row.row_id + '"]').html(EditableTableBuilder.html).css({"background-color" : row_background_color, "color" : row_color })
|
36
|
+
|
37
|
+
EditableTableAligner.align_after_rows_update(obj)
|
38
|
+
|
39
|
+
#############################################################################33
|
40
|
+
##############################private #######################################333
|
41
|
+
##############################################################################33
|
42
|
+
|
43
|
+
|
44
|
+
@make_table: ->
|
45
|
+
row_count = 0
|
46
|
+
for row in EditableTableBuilder.obj.data
|
47
|
+
do (row) ->
|
48
|
+
row_count += 1
|
49
|
+
EditableTableBuilder.html += '<tr data-row-count-number="' + row_count + '"'
|
50
|
+
console.log(EditableTableBuilder.obj.row_colors)
|
51
|
+
if EditableTableBuilder.obj.row_colors?
|
52
|
+
if EditableTableBuilder.obj.row_colors[row.row_id]?
|
53
|
+
style = 'color:' + EditableTableBuilder.obj.row_colors[row.row_id]["color"]
|
54
|
+
style += '; background-color:' + EditableTableBuilder.obj.row_colors[row.row_id]["background_color"]
|
55
|
+
EditableTableBuilder.html += ' style="' + style+ '"'
|
56
|
+
|
57
|
+
EditableTableBuilder.html += ' data-row-id="' + row.row_id + '">'
|
58
|
+
|
59
|
+
# todo make possible to insertt function on the first or last column
|
60
|
+
EditableTableBuilder.add_row_checkboxes(row, row_count)
|
61
|
+
EditableTableBuilder.add_row_functions(row, row_count)
|
62
|
+
EditableTableBuilder.add_row_columns(row, row_count)
|
63
|
+
|
64
|
+
EditableTableBuilder.html += '</tr>'
|
65
|
+
|
66
|
+
EditableTableBuilder.add_summary_row()
|
67
|
+
|
68
|
+
@add_summary_row: ->
|
69
|
+
functions_present = EditableTableBuilder.obj.row? && EditableTableBuilder.obj.row.functions?
|
70
|
+
|
71
|
+
# code for sumarizes of the page (paginated)
|
72
|
+
summarize_page_present = false
|
73
|
+
summarize_page = ""
|
74
|
+
summarize_page += '<tr class="summarize_page" data-row-count-number="summarize_page">'
|
75
|
+
# todo make sure functions collumn got skipped when placement is different, eg. on the end
|
76
|
+
|
77
|
+
if EditableTableBuilder.obj.static_columns_left_side?
|
78
|
+
summarize_page += '<td class="summarize headcol" colspan="2"><span class="label">Celkem na stránce: </span></td>' if EditableTableBuilder.obj.checkboxes?
|
79
|
+
summarize_page += '<td class="summarize headcol">Celkem na stránce: </td>' if functions_present && !EditableTableBuilder.obj.checkboxes?
|
80
|
+
else
|
81
|
+
summarize_page += '<td class="summarize headcol" colspan="2"><span class="label">Celkem na stránce: </span></td>' if EditableTableBuilder.obj.checkboxes?
|
82
|
+
summarize_page += '<td class="summarize headcol">Celkem na stránce: </td>' if functions_present && !EditableTableBuilder.obj.checkboxes?
|
83
|
+
|
84
|
+
#headcol" if ((EditableTableBuilder.obj.static_columns_left_side).indexOf(col.name) != -1)
|
85
|
+
|
86
|
+
col_count = 0
|
87
|
+
for col in EditableTableBuilder.obj.columns
|
88
|
+
do (col) ->
|
89
|
+
col_count += 1
|
90
|
+
# the sumarize label has 2 colspan, so it has to be without 1 first column if there is no function column
|
91
|
+
unless col_count == 1 && !functions_present
|
92
|
+
summarize_page += '<td class="summarize ' + col.class
|
93
|
+
summarize_page += " headcol" if ((EditableTableBuilder.obj.static_columns_left_side).indexOf(col.name) != -1)
|
94
|
+
summarize_page += '">'
|
95
|
+
|
96
|
+
if col.summarize_page? || col.summarize_page_value?
|
97
|
+
summarize_page_present = true
|
98
|
+
summarize_page += '<div class="summarize_page non-breakable-collumn">'
|
99
|
+
summarize_page += if col.summarize_page_label? then col.summarize_page_label else ''
|
100
|
+
summarize_page += '<span class="value">'
|
101
|
+
summarize_page += if col.summarize_page_value? then col.summarize_page_value else 0
|
102
|
+
summarize_page += '</span>'
|
103
|
+
summarize_page += '</div>'
|
104
|
+
|
105
|
+
summarize_page += '</td>'
|
106
|
+
summarize_page += '</tr>'
|
107
|
+
|
108
|
+
|
109
|
+
EditableTableBuilder.html += summarize_page if summarize_page_present
|
110
|
+
|
111
|
+
# code for sumarizes of the all filtered data (paginated is not used)
|
112
|
+
summarize_all_present = false
|
113
|
+
summarize_all = ""
|
114
|
+
summarize_all += '<tr class="summarize_all" data-row-count-number="summarize_all">'
|
115
|
+
|
116
|
+
if EditableTableBuilder.obj.static_columns_left_side?
|
117
|
+
summarize_all += '<td class="summarize headcol" colspan="2"><span class="label">Celkem: </span></td>' if EditableTableBuilder.obj.checkboxes?
|
118
|
+
#it has colspan 2 so there is no function column
|
119
|
+
summarize_all += '<td class="summarize headcol">Celkem: </td>' if functions_present && !EditableTableBuilder.obj.checkboxes?
|
120
|
+
else
|
121
|
+
summarize_all += '<td class="summarize headcol" colspan="2"><span class="label">Celkem: </span></td>' if EditableTableBuilder.obj.checkboxes?
|
122
|
+
#it has colspan 2 so there is no function column
|
123
|
+
summarize_all += '<td class="summarize headcol">Celkem: </td>' if functions_present && !EditableTableBuilder.obj.checkboxes?
|
124
|
+
|
125
|
+
col_count = 0
|
126
|
+
for col in EditableTableBuilder.obj.columns
|
127
|
+
do (col) ->
|
128
|
+
col_count += 1
|
129
|
+
# the sumarize label has 2 colspan, so it has to without 1 first column if there is no function column
|
130
|
+
unless col_count == 1 && !functions_present
|
131
|
+
summarize_all += '<td class="summarize ' + col.class
|
132
|
+
summarize_all += " headcol" if ((EditableTableBuilder.obj.static_columns_left_side).indexOf(col.name) != -1)
|
133
|
+
summarize_all += '">'
|
134
|
+
|
135
|
+
if col.summarize_all? || col.summarize_all_value?
|
136
|
+
summarize_all_present = true
|
137
|
+
summarize_all += '<div class="summarize_all non-breakable-collumn">'
|
138
|
+
summarize_all += if col.summarize_all_label? then col.summarize_all_label else ''
|
139
|
+
summarize_all += '<span class="value">'
|
140
|
+
summarize_all += if col.summarize_all_value? then col.summarize_all_value else 0
|
141
|
+
summarize_all += '</span>'
|
142
|
+
summarize_all += '</div>'
|
143
|
+
summarize_all += '</td>'
|
144
|
+
summarize_all += '</tr>'
|
145
|
+
|
146
|
+
EditableTableBuilder.html += summarize_all if summarize_all_present
|
147
|
+
|
148
|
+
@add_row_checkboxes: (row, row_count) ->
|
149
|
+
if EditableTableBuilder.obj.checkboxes?
|
150
|
+
|
151
|
+
el_class = "chbox"
|
152
|
+
el_class += static_left_column_class = " headcol" if EditableTableBuilder.obj.static_columns_left_side?
|
153
|
+
|
154
|
+
if row_count == 1
|
155
|
+
EditableTableBuilder.html += '<td class="' + el_class + '" '
|
156
|
+
EditableTableBuilder.html += 'data-width-align-id="special_checbox_filtering"'
|
157
|
+
else
|
158
|
+
EditableTableBuilder.html += '<td class="' + el_class + '" '
|
159
|
+
EditableTableBuilder.html += '">'
|
160
|
+
|
161
|
+
EditableTableBuilder.html += '<input type="checkbox" class="row_checkboxes" name="checkboxes[' + row.row_id + ']"'
|
162
|
+
EditableTableBuilder.html += ' onclick="CheckboxPool.change($(this))"'
|
163
|
+
#console.log CheckboxPool.get_pool_by_form_id(TableBuilder.obj.form_id, row.row_id)
|
164
|
+
#console.log CheckboxPool.include_value(TableBuilder.obj.form_id, row.row_id)
|
165
|
+
EditableTableBuilder.html += ' checked="checked"' if CheckboxPool.include_value(EditableTableBuilder.obj.form_id, row.row_id)
|
166
|
+
EditableTableBuilder.html += ' value="' + row.row_id + '">'
|
167
|
+
|
168
|
+
|
169
|
+
EditableTableBuilder.html += '</td>'
|
170
|
+
|
171
|
+
|
172
|
+
@add_row_functions: (row, row_count) ->
|
173
|
+
if EditableTableBuilder.obj.row? && EditableTableBuilder.obj.row.functions?
|
174
|
+
static_left_column_class = ""
|
175
|
+
static_left_column_class = "headcol" if EditableTableBuilder.obj.static_columns_left_side?
|
176
|
+
|
177
|
+
if row_count == 1
|
178
|
+
EditableTableBuilder.html += '<td class="' + static_left_column_class + '"'
|
179
|
+
EditableTableBuilder.html += 'data-width-align-id="special_functions">'
|
180
|
+
else
|
181
|
+
EditableTableBuilder.html += '<td class="' + static_left_column_class + '">'
|
182
|
+
|
183
|
+
# todo editacni tabulka si bude mit fixni vysku radku
|
184
|
+
EditableTableBuilder.html += '<div class="non-breakable-collumn">' if true
|
185
|
+
#col.non_breakable? && col.non_breakable
|
186
|
+
|
187
|
+
for function_name, settings of EditableTableBuilder.obj.row.functions
|
188
|
+
EditableTableBuilder.make_row_function_button(settings, row)
|
189
|
+
|
190
|
+
EditableTableBuilder.html += '</div>'
|
191
|
+
EditableTableBuilder.html += '</td>'
|
192
|
+
|
193
|
+
@add_row_columns: (row, row_count) ->
|
194
|
+
for col in EditableTableBuilder.obj.columns
|
195
|
+
do (col) ->
|
196
|
+
cell_name = ""
|
197
|
+
cell_name += col.table if col.table?
|
198
|
+
cell_name += '___' + col.name if col.name?
|
199
|
+
|
200
|
+
|
201
|
+
EditableTableBuilder.html += '<td '
|
202
|
+
|
203
|
+
if EditableTableBuilder.obj.cell_colors?
|
204
|
+
if EditableTableBuilder.obj.cell_colors[row.row_id]?
|
205
|
+
if EditableTableBuilder.obj.cell_colors[row.row_id][col.name]?
|
206
|
+
style = 'background-color:' + EditableTableBuilder.obj.cell_colors[row.row_id][col.name]["background_color"] + ' !important'
|
207
|
+
style += '; color:' + EditableTableBuilder.obj.cell_colors[row.row_id][col.name]["color"] + ' !important'
|
208
|
+
EditableTableBuilder.html += ' style="' + style + '"'
|
209
|
+
|
210
|
+
if col.editable?
|
211
|
+
EditableTableBuilder.html += ' data-cell-identifier="' + cell_name + "___" + row.row_id + '"'
|
212
|
+
EditableTableBuilder.html += ' onclick="EditableTableModalDialog.show(this, \'' + EditableTableBuilder.obj.editable_table_edit_cell_path + '\')"'
|
213
|
+
|
214
|
+
# row number 1 of body is for width synchronizin with header (if I edit first row, it will affect all others)
|
215
|
+
if row_count == 1
|
216
|
+
EditableTableBuilder.html += ' data-width-align-id="'
|
217
|
+
EditableTableBuilder.html += cell_name
|
218
|
+
EditableTableBuilder.html += '"'
|
219
|
+
|
220
|
+
EditableTableBuilder.html += ' class="' + col.class
|
221
|
+
# adding colhead class, determines if it will be moved to static left column
|
222
|
+
EditableTableBuilder.html += " headcol" if ((EditableTableBuilder.obj.static_columns_left_side).indexOf(col.name) != -1)
|
223
|
+
EditableTableBuilder.html += " editable_cell" if col.editable?
|
224
|
+
EditableTableBuilder.html += '"'
|
225
|
+
|
226
|
+
EditableTableBuilder.html += '">'
|
227
|
+
|
228
|
+
# todo editacni tabulka si bude mit fixni vysku radku
|
229
|
+
EditableTableBuilder.html += '<div class="non-breakable-collumn">' if true
|
230
|
+
#col.non_breakable? && col.non_breakable
|
231
|
+
|
232
|
+
if (is_hash(row[col.table + '_' + col.name]))
|
233
|
+
# hash span or href (styled as button)
|
234
|
+
button_settings = row[col.table + '_' + col.name]
|
235
|
+
button_settings = {} if !button_settings?
|
236
|
+
EditableTableBuilder.make_column_from_hash(button_settings, row, col)
|
237
|
+
|
238
|
+
else if (is_array(row[col.table + '_' + col.name]))
|
239
|
+
# array of hashes (probably buttons)
|
240
|
+
one_cell_buttons = row[col.table + '_' + col.name]
|
241
|
+
for one_cell_button in one_cell_buttons
|
242
|
+
do (one_cell_button) ->
|
243
|
+
one_cell_button = {} if !one_cell_buttons?
|
244
|
+
EditableTableBuilder.make_column_from_hash(one_cell_button, row, col)
|
245
|
+
|
246
|
+
else if (is_string(row[col.table + '_' + col.name]))
|
247
|
+
# its just string
|
248
|
+
text = ""
|
249
|
+
text = row[col.table + '_' + col.name] if row[col.table + '_' + col.name]?
|
250
|
+
text = row[col.name] if row[col.name]? && text? && text.length <= 0
|
251
|
+
|
252
|
+
sliced_text = text
|
253
|
+
if (col.max_text_length)
|
254
|
+
max = col.max_text_length - 3
|
255
|
+
sliced_text = sliced_text.slice(0, col.max_text_length) + "..." if ( max > 0 && sliced_text.length > max)
|
256
|
+
else
|
257
|
+
# i will be always slicing
|
258
|
+
max = 30
|
259
|
+
sliced_text = sliced_text.slice(0, max + 3) + "..." if ( max > 0 && sliced_text.length > max)
|
260
|
+
|
261
|
+
EditableTableBuilder.html += '<span title="' + text + '">' + sliced_text + '</span>'
|
262
|
+
|
263
|
+
else
|
264
|
+
# its something else eg. number cant be sliced, or its probably aliens Kveigars
|
265
|
+
text = ""
|
266
|
+
text = row[col.table + '_' + col.name] if row[col.table + '_' + col.name]?
|
267
|
+
text = row[col.name] if row[col.name]? && text? && text.length <= 0
|
268
|
+
# console.log[text]
|
269
|
+
|
270
|
+
EditableTableBuilder.html += '<span title="' + text + '">' + text + '</span>'
|
271
|
+
EditableTableBuilder.html += '</div>' if col.non_breakable? && col.non_breakable
|
272
|
+
EditableTableBuilder.html += '</td>'
|
273
|
+
|
274
|
+
|
275
|
+
@make_href_button: (settings, row, col) ->
|
276
|
+
sliced_text = settings['name']
|
277
|
+
if col?
|
278
|
+
if (col.max_text_length)
|
279
|
+
max = col.max_text_length - 3
|
280
|
+
sliced_text = sliced_text.slice(0, col.max_text_length) + "..." if ( max > 0 && sliced_text.length > max)
|
281
|
+
|
282
|
+
it_is_link = false
|
283
|
+
it_is_link = true if (settings.url || settings.symlink_controller || settings.symlink_action || settings.symlink_id || settings.symlink_outer_controller || settings.symlink_outer_id)
|
284
|
+
|
285
|
+
|
286
|
+
if it_is_link
|
287
|
+
stringified_settings = JSON.stringify(settings)
|
288
|
+
|
289
|
+
stringified_settings = stringified_settings.replace(/"/g, '"')
|
290
|
+
# this is crutial unless the double quotes will fuck up html
|
291
|
+
non_ajax_url = build_get_url(settings)
|
292
|
+
EditableTableBuilder.html += '<a href="' + non_ajax_url + '"'
|
293
|
+
else
|
294
|
+
EditableTableBuilder.html += '<span'
|
295
|
+
|
296
|
+
EditableTableBuilder.html += ' class="' + settings.class + '"' if settings.class?
|
297
|
+
if settings.title?
|
298
|
+
EditableTableBuilder.html += ' title="' + settings.title + '"'
|
299
|
+
else
|
300
|
+
EditableTableBuilder.html += ' title="' + settings.name + '"'
|
301
|
+
|
302
|
+
EditableTableBuilder.html += ' data-tr_class="' + settings.tr_class + '"' if settings.tr_class?
|
303
|
+
EditableTableBuilder.html += ' data-td_class="' + settings.td_class + '"' if settings.td_class? && settings.td_class.length > 0
|
304
|
+
|
305
|
+
if it_is_link
|
306
|
+
if (settings.confirm)
|
307
|
+
EditableTableBuilder.html += ' onclick="if (confirm(\'' + settings.confirm + '\')){ load_page(' + stringified_settings + ',this); }; return false;"'
|
308
|
+
else
|
309
|
+
EditableTableBuilder.html += ' onclick="load_page(' + stringified_settings + ',this); return false;"'
|
310
|
+
|
311
|
+
else if settings.js_code?
|
312
|
+
# a javascrip code can be passed, it will be put as onclick javascript of the button
|
313
|
+
EditableTableBuilder.html += ' onclick="' + settings.js_code
|
314
|
+
EditableTableBuilder.html += '"'
|
315
|
+
|
316
|
+
EditableTableBuilder.html += '>' + sliced_text
|
317
|
+
|
318
|
+
if it_is_link
|
319
|
+
EditableTableBuilder.html += '</a>'
|
320
|
+
else
|
321
|
+
EditableTableBuilder.html += '</span>'
|
322
|
+
|
323
|
+
|
324
|
+
|
325
|
+
|
326
|
+
@make_row_function_button: (button_settings, row, col) ->
|
327
|
+
button_settings.symlink_id = row.row_id if row?
|
328
|
+
# only for generic row functions, they are defined without the id
|
329
|
+
EditableTableBuilder.make_href_button(button_settings, row, col)
|
330
|
+
|
331
|
+
@make_column_from_hash: (button_settings, row, col) ->
|
332
|
+
button_settings['origin'] = 'table'
|
333
|
+
EditableTableBuilder.make_href_button(button_settings, row, col)
|
334
|
+
|
335
|
+
|
336
|
+
window.EditableTableBuilder = EditableTableBuilder
|
337
|
+
|
338
|
+
|
339
|
+
|
340
|
+
|
341
|
+
|
@@ -0,0 +1,93 @@
|
|
1
|
+
class EditableTableModalDialog
|
2
|
+
@init: (modal_id) ->
|
3
|
+
# init will be called only once
|
4
|
+
EditableTableModalDialog.modal_id = modal_id
|
5
|
+
modal_id_jquery = '#' + modal_id
|
6
|
+
|
7
|
+
# I want to focus the input in the modal, but I can do this onlz after it's shown
|
8
|
+
$(modal_id_jquery).on('shown', ->
|
9
|
+
EditableTableModalDialog.focus()
|
10
|
+
)
|
11
|
+
|
12
|
+
# on enter I want to submit form inside
|
13
|
+
$(modal_id_jquery).on('keyup', (e) ->
|
14
|
+
event_obj = e
|
15
|
+
|
16
|
+
unless event_obj?
|
17
|
+
if window.event
|
18
|
+
event_obj = window.event
|
19
|
+
else
|
20
|
+
#FF uses this
|
21
|
+
event_obj =event.which;
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
# We don't want this to act as a link so cancel the link action
|
26
|
+
event_obj .stopPropagation()
|
27
|
+
event_obj .preventDefault()
|
28
|
+
|
29
|
+
|
30
|
+
# if enter pressed
|
31
|
+
if event_obj.keyCode == 13
|
32
|
+
if (!event_obj.shiftKey && !event_obj.ctrlKey)
|
33
|
+
#Find form and submit it
|
34
|
+
$(modal_id_jquery).find('form').submit();
|
35
|
+
# todo zjistit jak oddelat onkey down asi ze submitu, ted se form pri stiknuti enteru posila dvakrat, jenom kdzy jsem v testarei, tak ne
|
36
|
+
# todo zatim jsem to osral tim ze jsem dal do fromu prazdny button ktery ty eventy odchytava a pak to funguje hezky, musim to ale udelat jinak
|
37
|
+
#console.log($(modal_id_jquery).find('input[type="submit"]')) # nekde ten button je, musim ho najit a deaktivovat
|
38
|
+
)
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
@show: (cell_element, edit_cell_path) ->
|
44
|
+
cell_id = $(cell_element).data("cell-identifier")
|
45
|
+
|
46
|
+
url = "fill_the_url_in_controller"
|
47
|
+
url = edit_cell_path if edit_cell_path?
|
48
|
+
url += "?cell_id=" + cell_id
|
49
|
+
|
50
|
+
# load the content of modal
|
51
|
+
load_page({
|
52
|
+
"content_id": "modal_cell_editing",
|
53
|
+
'symlink_remote': true,
|
54
|
+
'url': url,
|
55
|
+
"no_tracking": true
|
56
|
+
|
57
|
+
})
|
58
|
+
|
59
|
+
#show the modal and then it will be loaded with data
|
60
|
+
#$('#modal_cell_editing').modal('show')
|
61
|
+
|
62
|
+
|
63
|
+
# asynchronosly put content of modal when it is prepared and show it
|
64
|
+
$(document).bind('page_loader.loaded', EditableTableModalDialog.display)
|
65
|
+
|
66
|
+
|
67
|
+
|
68
|
+
@hide: ->
|
69
|
+
$('#modal_cell_editing').modal('hide')
|
70
|
+
|
71
|
+
#############################################3
|
72
|
+
############## private #####################
|
73
|
+
|
74
|
+
|
75
|
+
@display: ->
|
76
|
+
$('#modal_cell_editing').modal('show')
|
77
|
+
|
78
|
+
# unbing the event and the handler, it should remove only this one binded handler
|
79
|
+
# todo check if this wont remove other binded handlers !!!!!!!!!!!!
|
80
|
+
$(document).unbind('page_loader.loaded', EditableTableModalDialog.display)
|
81
|
+
|
82
|
+
|
83
|
+
@focus: ->
|
84
|
+
if ($('#modal_cell_editing').find('[data-focus-id="this_will_be_focused_input_id"]').length > 0)
|
85
|
+
$('#modal_cell_editing').find('[data-focus-id="this_will_be_focused_input_id"]').focus()
|
86
|
+
$('#modal_cell_editing').find('[data-focus-id="this_will_be_focused_input_id"]').focus()
|
87
|
+
|
88
|
+
window.EditableTableModalDialog = EditableTableModalDialog
|
89
|
+
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
|
@@ -10,4 +10,12 @@ function is_array(object) {
|
|
10
10
|
|
11
11
|
function is_string(object) {
|
12
12
|
return object && (Object.prototype.toString.call(object) == '[object String]');
|
13
|
+
}
|
14
|
+
|
15
|
+
|
16
|
+
function mark_active_color_box(obj)
|
17
|
+
{
|
18
|
+
$(obj).parents(".colors_block").find("label").removeClass("active")
|
19
|
+
$(obj).addClass("active")
|
20
|
+
|
13
21
|
}
|
@@ -28,6 +28,12 @@ function connect_callback_to_form(caller_id) {
|
|
28
28
|
process_error_data(form, data);
|
29
29
|
Alert.show("#" + caller_id);
|
30
30
|
}
|
31
|
+
else if (data['status'] == "modal-ok") {
|
32
|
+
Alert.show("#" + caller_id);
|
33
|
+
// todo bud sem dat zpoydeni nebo tu message yobrayit jinak, takhle se hned schova dialog a s nim i message
|
34
|
+
EditableTableModalDialog.hide();
|
35
|
+
EditableTableBuilder.update_rows(data['updated_settings'])
|
36
|
+
}
|
31
37
|
else {
|
32
38
|
if (data['settings']) {
|
33
39
|
load_page(data['settings']);
|