it-logica-application-backbone 1.1.8 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (26) hide show
  1. data/VERSION +1 -1
  2. data/app/assets/javascripts/backbone_js/bootstrap_modal.js +234 -0
  3. data/app/assets/javascripts/backbone_js/ladas_breadcrumb.js.coffee +15 -2
  4. data/app/assets/javascripts/backbone_js/ladas_editable_table_aligner.js.coffee +243 -0
  5. data/app/assets/javascripts/backbone_js/ladas_editable_table_builder.js.coffee +341 -0
  6. data/app/assets/javascripts/backbone_js/ladas_editable_table_modal_dialog.js.coffee +93 -0
  7. data/app/assets/javascripts/backbone_js/ladas_functions.js +8 -0
  8. data/app/assets/javascripts/backbone_js/ladas_saving.js +6 -0
  9. data/app/assets/javascripts/backbone_js/ladas_table_builder.js.coffee +1 -1
  10. data/app/assets/stylesheets/backbone_css/bootstrap_modal.css +139 -0
  11. data/app/assets/stylesheets/backbone_css/design.css +1 -1
  12. data/app/assets/stylesheets/backbone_css/editable_tables.css.scss +108 -0
  13. data/app/views/helpers/editable_table/_build_ajax_callback_code.html.erb +3 -0
  14. data/app/views/helpers/editable_table/_build_table.html.erb +128 -0
  15. data/app/views/helpers/editable_table/_build_table_data.html.erb +14 -0
  16. data/app/views/helpers/editable_table/_build_table_filter.html.erb +70 -0
  17. data/app/views/helpers/editable_table/_build_table_header.html.erb +136 -0
  18. data/app/views/helpers/editable_table/_build_table_pager.html.erb +31 -0
  19. data/app/views/helpers/editable_table/_build_table_text_description.html.erb +66 -0
  20. data/app/views/helpers/editable_table/_build_table_wrapper.html.erb +106 -0
  21. data/it-logica-application-backbone.gemspec +16 -2
  22. data/lib/model_mixins/table_builder_class_methods.rb +49 -0
  23. data/lib/table_settings/table_action.rb +5 -0
  24. data/lib/table_settings/table_column.rb +11 -0
  25. data/lib/view_mixins/table.rb +5 -0
  26. metadata +29 -15
@@ -0,0 +1,136 @@
1
+ <div class="scrollTarget">
2
+ <table class="table table-bordered table-condensed table_special">
3
+ <thead>
4
+ <tr class="filtering_tr" data-row-count-number="row_with_filters">
5
+ <% if !settings[:checkboxes].blank? && settings[:checkboxes] %>
6
+ <th class="chbox filtering_th <%= "headcol" if !settings[:static_columns_left_side].blank? %>" data-width-align-id="special_checbox_filtering">
7
+ </th>
8
+ <% end %>
9
+ <% if !settings[:row].blank? && !settings[:row][:functions].blank? %>
10
+ <th class="filtering_th <%= "headcol" if !settings[:static_columns_left_side].blank? %>" data-width-align-id="special_functions"></th>
11
+ <% end %>
12
+ <% order_by_arr = settings[:params][:order_by].downcase.split(",") unless settings[:params][:order_by].blank? %>
13
+ <% settings[:columns].each do |col| %>
14
+ <% width_align_id = col[:table].blank? ? "" : col[:table]
15
+ width_align_id += col[:name].blank? ? "" : ("___" + col[:name])
16
+ %>
17
+
18
+
19
+ <th class="filtering_th <%= col[:class] unless col[:class].blank? %> <%= col[:header_class] unless col[:header_class].blank? %>
20
+ <%= "headcol" if !settings[:static_columns_left_side].blank? && settings[:static_columns_left_side].include?(col[:name]) %>"
21
+ data-width-align-id="<%= width_align_id %>">
22
+ <% if settings[:display_method].blank? %>
23
+ <% case col[:filter] %>
24
+ <% when :find %>
25
+ <div class="inputs clearfix small_padding">
26
+ <% saved_param = (!settings[:params].blank? && !settings[:params]['find'].blank? && !settings[:params]['find']["#{col[:table]}.#{col[:name]}"].blank?) ? settings[:params]['find']["#{col[:table]}.#{col[:name]}"] : "" %>
27
+ <%= text_field_tag "find[#{col[:table]}.#{col[:name]}]", saved_param,
28
+ {:class => "text first #{settings[:form_id] + '_column_find'}"} %>
29
+ </div>
30
+ <% when :find_exact %>
31
+ <div class="inputs clearfix small_padding">
32
+ <% saved_param = (!settings[:params].blank? && !settings[:params]['find_exact'].blank? && !settings[:params]['find_exact']["#{col[:table]}.#{col[:name]}"].blank?) ? settings[:params]['find_exact']["#{col[:table]}.#{col[:name]}"] : "" %>
33
+ <%= text_field_tag "find_exact[#{col[:table]}.#{col[:name]}]", saved_param,
34
+ {:class => "text first #{settings[:form_id] + '_column_find'}"} %>
35
+ </div>
36
+ <% when :multichoice %>
37
+ <div class="inputs clearfix">
38
+ <% saved_param = (!settings[:params].blank? && !settings[:params]['multichoice'].blank? && !settings[:params]['multichoice']["#{col[:table]}.#{col[:name]}"].blank?) ? settings[:params]['multichoice']["#{col[:table]}.#{col[:name]}"] : [] %>
39
+ <%= select_tag("multichoice[#{col[:table]}.#{col[:name]}]", options_for_select(col[:filter_data], saved_param),
40
+ :onchange => "form_submit_watcher('#{settings[:form_id]}')",
41
+ :multiple => true,
42
+ :class => "multiselect_class") %>
43
+ </div>
44
+ <% when :number %>
45
+ <div class="inputs range clearfix small_padding">
46
+ <% saved_param = (!settings[:params].blank? && !settings[:params]['date_from'].blank? && !settings[:params]['date_from']["#{col[:table]}.#{col[:name]}"].blank?) ? settings[:params]['date_from']["#{col[:table]}.#{col[:name]}"] : "" %>
47
+
48
+ <%= text_field_tag "number_from[#{col[:table]}.#{col[:name]}]", saved_param, {:class => "text first #{settings[:form_id] + '_column_find'}",
49
+ :onchange => "form_submit_watcher('#{settings[:form_id]}')",
50
+ :placeholder => "min.",
51
+ :title => "Hodnota musí být vetší nebo rovna zadané hodnotě"} %>
52
+ <% saved_param = (!settings[:params].blank? && !settings[:params]['date_to'].blank? && !settings[:params]['date_to']["#{col[:table]}.#{col[:name]}"].blank?) ? settings[:params]['date_to']["#{col[:table]}.#{col[:name]}"] : "" %>
53
+ <%#= label_tag "date_to[#{col[:table]}.#{col[:name]}]", "Do", :class => "datetime_class_label" %>
54
+ <%= text_field_tag "number_to[#{col[:table]}.#{col[:name]}]", saved_param, {:class => "text #{settings[:form_id] + '_column_find'}",
55
+ :onchange => "form_submit_watcher('#{settings[:form_id]}')",
56
+ :placeholder => "max.",
57
+ :title => "Hodnota musí být menší nebo rovna zadané hodnotě"} %>
58
+ </div>
59
+ <% when :date %>
60
+ <div class="inputs range clearfix small_padding">
61
+ <% saved_param = (!settings[:params].blank? && !settings[:params]['date_from'].blank? && !settings[:params]['date_from']["#{col[:table]}.#{col[:name]}"].blank?) ? settings[:params]['date_from']["#{col[:table]}.#{col[:name]}"] : "" %>
62
+ <%#= label_tag "date_from[#{col[:table]}.#{col[:name]}]", "Od", :class => "datetime_class_label" %>
63
+ <%= text_field_tag "date_from[#{col[:table]}.#{col[:name]}]", saved_param, {:class => "text datetime_class first",
64
+ :onchange => "form_submit_watcher('#{settings[:form_id]}')",
65
+ :placeholder => "od",
66
+ :title => "Datum od"} %>
67
+ <% saved_param = (!settings[:params].blank? && !settings[:params]['date_to'].blank? && !settings[:params]['date_to']["#{col[:table]}.#{col[:name]}"].blank?) ? settings[:params]['date_to']["#{col[:table]}.#{col[:name]}"] : "" %>
68
+ <%#= label_tag "date_to[#{col[:table]}.#{col[:name]}]", "Do", :class => "datetime_class_label" %>
69
+ <%= text_field_tag "date_to[#{col[:table]}.#{col[:name]}]", saved_param, {:class => "text datetime_class",
70
+ :onchange => "form_submit_watcher('#{settings[:form_id]}')",
71
+ :placeholder => "do",
72
+ :title => "Datum do"} %>
73
+ </div>
74
+ <% else %>
75
+ <% end %>
76
+
77
+ <% end %>
78
+ </th>
79
+
80
+ <% end %>
81
+ </tr>
82
+
83
+ <tr class="sorting_tr" data-row-count-number="row_with_sorting">
84
+ <% if !settings[:checkboxes].blank? && settings[:checkboxes] %>
85
+ <th class="chbox <%= "headcol" if !settings[:static_columns_left_side].blank? %>">
86
+ <input type="checkbox" title="Označit/odznačit vše na stránce" onclick="CheckboxPool.check_or_uncheck_page(this, '<%= settings[:form_id] %>')" id=""/>
87
+ </th>
88
+ <% end %>
89
+ <% if !settings[:row].blank? && !settings[:row][:functions].blank? %>
90
+ <th class="<%= "headcol" if !settings[:static_columns_left_side].blank? %>"></th>
91
+ <% end %>
92
+ <% order_by_arr = settings[:params][:order_by].downcase.split(",") unless settings[:params][:order_by].blank? %>
93
+ <% settings[:columns].each do |col| %>
94
+ <% order_id = (col[:table].blank? || col[:name].blank?) ? "" : (col[:table] + "___" + col[:name] + "") %>
95
+ <% order_asc_id = (col[:table].blank? || col[:name].blank?) ? "" : (col[:table] + "___" + col[:name] + "___asc") %>
96
+ <% order_desc_id = (col[:table].blank? || col[:name].blank?) ? "" : (col[:table] + "___" + col[:name] + "___desc") %>
97
+
98
+ <%
99
+ sorted_class = ""
100
+ if col[:column_method].blank? && col[:row_method].blank? && !col[:name].blank?
101
+ sorted_class += "sorting_th "
102
+
103
+ sorting_onclick = "TableSorting.force_toggled_change_sorting('#{settings[:form_id]}','#{col[:table] + "." +col[:name]}', this); return false;"
104
+ sorting_mouseover = "TableSorting.mouse_over_hover_sorting('#{settings[:form_id]}','#{col[:table] + "." +col[:name]}', this); return false;"
105
+ sorting_mouseout = "TableSorting.mouse_out_hover_sorting('#{settings[:form_id]}','#{col[:table] + "." +col[:name]}', this); return false;"
106
+
107
+ if (order_by_arr.include?(col[:table] + "." + col[:name] + " desc"))
108
+ sorted_class +="sorted sorted_desc"
109
+ elsif (order_by_arr.include?(col[:table] + "." + col[:name] + " asc"))
110
+ sorted_class +="sorted sorted_asc"
111
+ end
112
+ end
113
+
114
+ %>
115
+
116
+ <th class="<%= order_asc_id %> <%= order_desc_id %> <%= col[:class] unless col[:class].blank? %> <%= sorted_class %> <%= col[:header_class] unless col[:header_class].blank? %>
117
+ <%= "headcol" if !settings[:static_columns_left_side].blank? && settings[:static_columns_left_side].include?(col[:name]) %>"
118
+ onmouseover="<%= sorting_mouseover %>"
119
+ onmouseout="<%= sorting_mouseout %>"
120
+ onclick="<%= sorting_onclick %>"
121
+ title="<%= col[:title].html_safe unless col[:title].blank? %>"
122
+ >
123
+ <div class="th_label">
124
+ <strong>
125
+ <span><%= col[:label].html_safe %></span>
126
+ </strong>
127
+ </div>
128
+ </th>
129
+
130
+ <% end %>
131
+ </tr>
132
+
133
+
134
+ </thead>
135
+ </table>
136
+ </div>
@@ -0,0 +1,31 @@
1
+ <div class="filter-paging clearfix <%= placement if defined? placement %>">
2
+ <div class="reset">
3
+ <%= ajax_post_link_to "Smazat filtr", settings[:filter_path],
4
+ "data-content_id" => settings[:content_id].blank? ? "" : settings[:content_id],
5
+ :class => "btn",
6
+ "data-post" => {:clear => true}.to_json %>
7
+ </div>
8
+
9
+ <% if settings[:data_paginate].total_pages > 1 %>
10
+ <div id="<%= settings[:form_id] %>_pagination" class="paging <%= settings[:form_id] %>_pager">
11
+ <div class="goToPage">
12
+ <input type="text" class="own_page" value="<%= settings[:params].blank? ? 1 : settings[:params]["page"] %>"
13
+ placeholder="Strana"
14
+ onkeypress="paginate_by_enter('<%= settings[:form_id] %>', this, event);">
15
+ <button class="btn" onclick='$("#" + "<%= settings[:form_id] %>" + "_page").val($(this).prev("input").val()); $("#" + "<%= settings[:form_id] %>").submit(); return false;'>Přejít</button>
16
+ </div>
17
+ <div class="pages">
18
+ <%= will_paginate settings[:data_paginate], {:container => false, :inner_window => 1, :outer_window => 1} %>
19
+ <%= page_entries_info settings[:data_paginate] %>
20
+ </div>
21
+ </div>
22
+
23
+ <% else %>
24
+ <div id="<%= settings[:form_id] %>_pagination" class="paging <%= settings[:form_id] %>_pager">
25
+ <div class="pages">
26
+ <%= page_entries_info settings[:data_paginate] %>
27
+ </div>
28
+ </div>
29
+ <% end %>
30
+ </div>
31
+
@@ -0,0 +1,66 @@
1
+ <%
2
+ #load_text
3
+ text = settings[:description] unless settings[:description].blank?
4
+ text_obj = nil
5
+ edit_right = false
6
+ edit_description_path = {}
7
+
8
+ if text.blank? &&
9
+ defined?(ModelMixins::TableBuilderClassMethods::DESCRIPTION_CLASS) &&
10
+ defined?(ModelMixins::TableBuilderClassMethods::DESCRIPTION_METHOD) &&
11
+ defined?(ModelMixins::TableBuilderClassMethods::DESCRIPTION_IDENTIFIER)
12
+ desc_class = ModelMixins::TableBuilderClassMethods::DESCRIPTION_CLASS
13
+ desc_method = ModelMixins::TableBuilderClassMethods::DESCRIPTION_METHOD
14
+ desc_id = ModelMixins::TableBuilderClassMethods::DESCRIPTION_IDENTIFIER
15
+ text_obj = desc_class.where(desc_id => settings[:form_id]).first
16
+
17
+ text = text_obj.send(desc_method) unless text_obj.blank?
18
+
19
+
20
+ # find out if there is edit right for current request
21
+
22
+ edit_right = true if settings[:can_edit_description]
23
+
24
+ if defined?(ModelMixins::TableBuilderClassMethods.can_edit_description)
25
+ ModelMixins::TableBuilderClassMethods.can_edit_description &&
26
+ edit_right = true
27
+ end
28
+
29
+ # load edit description path
30
+
31
+ edit_description_path = settings[:edit_description_path].blank? if settings[:edit_description_path].blank?
32
+
33
+ if defined?(ModelMixins::TableBuilderClassMethods::EDIT_DESCRIPTION_PATH)
34
+ edit_description_path = ModelMixins::TableBuilderClassMethods::EDIT_DESCRIPTION_PATH.dup
35
+ end
36
+
37
+ # adding id fot edit path
38
+ unless edit_description_path.blank?
39
+ unless text_obj.blank?
40
+ edit_description_path[:symlink_id] = text_obj.send(desc_class.primary_key)
41
+ edit_description_path[:symlink_action] = :edit
42
+ else
43
+ edit_description_path[:symlink_action] = :new
44
+ edit_description_path[:symlink_params] = "?form_id="+settings[:form_id]
45
+ edit_description_path[:no_tracking] = true
46
+ end
47
+ edit_description_path[:symlink_remote] = true
48
+ end
49
+ end
50
+
51
+ %>
52
+
53
+ <% if settings[:display_method].blank? %>
54
+ <% if !edit_description_path.blank? && !edit_right.blank? && edit_right %>
55
+ <div class="table_text_description_edit_button">
56
+ <a href="#" onclick="load_page(<%= edit_description_path.to_json %>); return false;" class="btn primary">Editovat
57
+ popisek</a>
58
+ </div>
59
+ <% end %>
60
+ <% end %>
61
+
62
+ <% unless text.blank? %>
63
+ <div class="table_text_description">
64
+ <%= text.html_safe %>
65
+ </div>
66
+ <% end %>
@@ -0,0 +1,106 @@
1
+ <div class="tableContainer" id="table_container_id">
2
+
3
+ <% unless settings[:static_columns_left_side].blank? %>
4
+ <div class="fixedLeftColumn" style="float:left">
5
+ <div class="scrollTargetContainter">
6
+ <table class="table table-bordered table-condensed table_special table_head">
7
+ <thead>
8
+ </thead>
9
+ </table>
10
+ </div>
11
+ <div class="detachedTableContainer">
12
+ <div class="detachedTable">
13
+ <table class="table table-bordered table-condensed table_special table_body">
14
+ <tbody>
15
+ </tbody>
16
+ <tfoot>
17
+ <!--<tr>-->
18
+ <!--<th colspan="100" class="<%#= settings[:form_id] + '_ajax_pager' %>">-->
19
+ <!--<%#= render :partial => 'helpers/build_table_pager', :locals => {:settings => settings} %>-->
20
+ <!--</th>-->
21
+ <!--</tr>-->
22
+ </tfoot>
23
+ </table>
24
+ </div>
25
+ </div>
26
+ </div>
27
+ <% end %>
28
+ <div class="centerContainer" style="float:left">
29
+ <div class="scrollTargetContainter">
30
+ <%= render :partial => "/helpers/editable_table/build_table_header", :locals => {:settings => settings, :static_columns_left_side => nil} %>
31
+ </div>
32
+
33
+ <div class="detachedTableContainer">
34
+ <div class="detachedTable">
35
+ <table class="table table-bordered table-condensed table_special">
36
+ <tbody id="<%= settings[:form_id] %>_ajax_content">
37
+ <% unless settings[:template].blank? %>
38
+ <%= render :partial => settings[:template], :locals => {:settings => settings} %>
39
+ <% end %>
40
+ </tbody>
41
+ <tfoot>
42
+ <!--<tr>-->
43
+ <!--<th colspan="100" class="<%#= settings[:form_id] + '_ajax_pager' %>">-->
44
+ <!--<%#= render :partial => 'helpers/build_table_pager', :locals => {:settings => settings} %>-->
45
+ <!--</th>-->
46
+ <!--</tr>-->
47
+ </tfoot>
48
+ </table>
49
+ </div>
50
+ </div>
51
+ </div>
52
+ <div style="clear:both"></div>
53
+ </div>
54
+
55
+
56
+ <script type="text/javascript">
57
+ $('.<%= settings[:form_id] + "_column_find" %>').livesearch({
58
+ searchCallback:function (searchTerm) {
59
+ FilterChangeMarker.mark_active_filters('<%= settings[:form_id] %>');
60
+ $('#<%= settings[:form_id] %>').submit();
61
+ },
62
+ queryDelay:1000,
63
+ innerText:"",
64
+ minimumSearchLength:1
65
+ });
66
+ </script>
67
+
68
+
69
+ <script type="text/javascript">
70
+ $.datepicker.setDefaults($.datepicker.regional[ "cs" ]);
71
+ $('.datetime_class').datetimepicker({
72
+ dateFormat:"yy-mm-dd",
73
+ timeFormat:'hh:mm',
74
+ separator:' ',
75
+ changeYear:true,
76
+ yearRange:'<%= Date.today.year - 100 %>:<%= Date.today.year + 30 %>',
77
+ changeMonth:true
78
+ });
79
+ </script>
80
+
81
+
82
+ <script type="text/javascript">
83
+ $('.multiselect_class').multiselect({
84
+ selectedText:'<span class="active_multiselect">***</span>',
85
+ noneSelectedText:"",
86
+ checkAllText:"Označit vše",
87
+ uncheckAllText:"Zrušit vše",
88
+ minWidth:100
89
+ },function () {
90
+ form_submit_watcher('<%=settings[:form_id] %>');
91
+ }).multiselectfilter();
92
+ //$('#filled_value_' + fid + '_' + rid).multiselect("open");
93
+ $(".ui-multiselect-menu").css("width", "240px");
94
+ // $("button.ui-multiselect").css("width", "55px");
95
+ $("button.ui-multiselect").css("width", "100%");
96
+ $("button.ui-multiselect").css("min-width", "22px");
97
+ $("button.ui-multiselect").css("max-width", "55px");
98
+ $("button.ui-multiselect").css("height", "22px");
99
+
100
+ $('.multiselect_class').bind("multiselectcheckall", function (event, ui) {
101
+ form_submit_watcher('<%=settings[:form_id] %>');
102
+ });
103
+ $('.multiselect_class').bind("multiselectuncheckall", function (event, ui) {
104
+ form_submit_watcher('<%=settings[:form_id] %>');
105
+ });
106
+ </script>
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "it-logica-application-backbone"
8
- s.version = "1.1.8"
8
+ s.version = "1.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ladas"]
12
- s.date = "2012-10-26"
12
+ s.date = "2012-11-05"
13
13
  s.description = "longer description of your gem"
14
14
  s.email = "ladislav.smola@it-logica.cz"
15
15
  s.extra_rdoc_files = [
@@ -134,6 +134,7 @@ Gem::Specification.new do |s|
134
134
  "app/assets/images/backbone_images/temp-userphoto-large.jpg",
135
135
  "app/assets/images/backbone_images/temp-userphoto.jpg",
136
136
  "app/assets/images/backbone_images/vrchovina-logo.png",
137
+ "app/assets/javascripts/backbone_js/bootstrap_modal.js",
137
138
  "app/assets/javascripts/backbone_js/index.js",
138
139
  "app/assets/javascripts/backbone_js/jquery-ui-timepicker-addon.js",
139
140
  "app/assets/javascripts/backbone_js/jquery-ui-timepicker-cs.js",
@@ -150,6 +151,9 @@ Gem::Specification.new do |s|
150
151
  "app/assets/javascripts/backbone_js/jquery.ui.widget.js",
151
152
  "app/assets/javascripts/backbone_js/ladas_alert.js.coffee",
152
153
  "app/assets/javascripts/backbone_js/ladas_breadcrumb.js.coffee",
154
+ "app/assets/javascripts/backbone_js/ladas_editable_table_aligner.js.coffee",
155
+ "app/assets/javascripts/backbone_js/ladas_editable_table_builder.js.coffee",
156
+ "app/assets/javascripts/backbone_js/ladas_editable_table_modal_dialog.js.coffee",
153
157
  "app/assets/javascripts/backbone_js/ladas_form_submitter.js",
154
158
  "app/assets/javascripts/backbone_js/ladas_functions.js",
155
159
  "app/assets/javascripts/backbone_js/ladas_initialize_history.js",
@@ -462,7 +466,9 @@ Gem::Specification.new do |s|
462
466
  "app/assets/javascripts/backbone_js/tinymce/jscripts/tiny_mce/utils/validate.js",
463
467
  "app/assets/javascripts/backbone_js/tmpl.min.js",
464
468
  "app/assets/stylesheets/backbone_css/bootstrap_and_overrides.css.scss",
469
+ "app/assets/stylesheets/backbone_css/bootstrap_modal.css",
465
470
  "app/assets/stylesheets/backbone_css/design.css",
471
+ "app/assets/stylesheets/backbone_css/editable_tables.css.scss",
466
472
  "app/assets/stylesheets/backbone_css/index.css.scss",
467
473
  "app/assets/stylesheets/backbone_css/jquery.fileupload-ui.css",
468
474
  "app/assets/stylesheets/backbone_css/jquery_datetime_picker.css.scss",
@@ -490,6 +496,14 @@ Gem::Specification.new do |s|
490
496
  "app/views/helpers/_build_table_pager.html.erb",
491
497
  "app/views/helpers/_build_table_text_description.html.erb",
492
498
  "app/views/helpers/_build_table_wrapper.html.erb",
499
+ "app/views/helpers/editable_table/_build_ajax_callback_code.html.erb",
500
+ "app/views/helpers/editable_table/_build_table.html.erb",
501
+ "app/views/helpers/editable_table/_build_table_data.html.erb",
502
+ "app/views/helpers/editable_table/_build_table_filter.html.erb",
503
+ "app/views/helpers/editable_table/_build_table_header.html.erb",
504
+ "app/views/helpers/editable_table/_build_table_pager.html.erb",
505
+ "app/views/helpers/editable_table/_build_table_text_description.html.erb",
506
+ "app/views/helpers/editable_table/_build_table_wrapper.html.erb",
493
507
  "it-logica-application-backbone.gemspec",
494
508
  "lib/backbone_css/engine.rb",
495
509
  "lib/backbone_images/engine.rb",
@@ -105,6 +105,9 @@ module ModelMixins
105
105
  template_items = object.where("#{settings[:row][:id]}" => all_items_row_ids)
106
106
  end
107
107
 
108
+ # loading colors for editable table
109
+ editable_table_load_colors(settings, object, all_items_row_ids)
110
+
108
111
  template_items = template_items.includes(settings[:includes])
109
112
 
110
113
  #template_items.all
@@ -561,5 +564,51 @@ module ModelMixins
561
564
  end
562
565
  params[:real_order_by] = order_by_arr*","
563
566
  end
567
+
568
+
569
+ def editable_table_load_colors(settings, object, all_items_row_ids)
570
+ if object.respond_to?(:klass)
571
+ object_class = object.klass
572
+ else
573
+ object_class = object
574
+ end
575
+
576
+ # if model has cell colors
577
+ if (object_class.new.respond_to?(:editable_table_cell_colors))
578
+ if defined? EditableTableCellColor
579
+ cell_colors = EditableTableCellColor.where(:owner_type => object_class.to_s, :owner_id => all_items_row_ids).all
580
+ cell_colors_for_settings = {}
581
+ cell_colors.each do |c|
582
+ cell_colors_for_settings[c.owner_id] ||= {}
583
+ cell_colors_for_settings[c.owner_id][c.cell_name] ||= {}
584
+ cell_colors_for_settings[c.owner_id][c.cell_name]["color"] = c.color
585
+ cell_colors_for_settings[c.owner_id][c.cell_name]["background_color"] = c.background_color
586
+ end
587
+ unless cell_colors_for_settings.blank?
588
+ settings.merge!({:cell_colors => cell_colors_for_settings})
589
+ end
590
+ end
591
+ end
592
+
593
+ # if model has row colors
594
+ if (object_class.new.respond_to?(:editable_table_row_colors))
595
+ if defined? EditableTableRowColor
596
+ row_colors = EditableTableRowColor.where(:owner_type => object_class.to_s, :owner_id => all_items_row_ids)
597
+ row_colors_for_settings = {}
598
+ row_colors.each do |c|
599
+ row_colors_for_settings[c.owner_id] ||= {}
600
+ row_colors_for_settings[c.owner_id]["color"] = c.color
601
+ row_colors_for_settings[c.owner_id]["background_color"] = c.background_color
602
+ end
603
+ unless row_colors_for_settings.blank?
604
+ settings.merge!({:row_colors => row_colors_for_settings})
605
+ end
606
+ end
607
+ end
608
+ end
609
+
610
+
564
611
  end
565
612
  end
613
+
614
+