it-logica-application-backbone 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.3
1
+ 1.0.4
@@ -69,10 +69,11 @@
69
69
  // the parameter is the node being loaded
70
70
  // (may be -1, 0, or undefined when loading the root nodes)
71
71
  "data":function (n) {
72
+ var root_id = typeof(self.settings['root_id']) == 'undefined' ? 0 : self.settings['root_id'];
72
73
  // the result is fed to the AJAX request `data` option
73
74
  return {
74
75
  "operation":"get_children",
75
- "id":n.attr ? n.attr("id").replace("node_", "") : 0
76
+ "id":n.attr ? n.attr("id").replace("node_", "") : root_id
76
77
  };
77
78
  },
78
79
  // "success" : function (data) {
@@ -238,7 +238,9 @@ function parse_link_and_load_page(element) {
238
238
  var settings = {};
239
239
  settings['url'] = element.attr("href");
240
240
  settings['symlink_remote'] = true;
241
-
241
+ if (element.data("content_id").length > 0) {
242
+ settings['content_id'] = element.data("content_id");
243
+ }
242
244
  load_page(settings);
243
245
  }
244
246
 
@@ -248,7 +250,9 @@ function parse_link_and_post(element) {
248
250
  settings['symlink_remote'] = true;
249
251
  settings['data'] = element.data("post");
250
252
  settings['method'] = "post";
251
-
253
+ if (element.data("content_id").length > 0) {
254
+ settings['content_id'] = element.data("content_id");
255
+ }
252
256
 
253
257
  load_page(settings);
254
258
  }
@@ -1,4 +1,8 @@
1
- <%= ajax_post_link_to "Smazat filtr", settings[:filter_path], :class => "btn", "data-post" => {:clear => true}.to_json, :style => "float: left" %>
1
+ <%= ajax_post_link_to "Smazat filtr", settings[:filter_path],
2
+ "data-content_id" => settings[:content_id].blank? ? "" : settings[:content_id],
3
+ :class => "btn",
4
+ "data-post" => {:clear => true}.to_json, :style => "float: left" %>
5
+
2
6
  <div id="<%= settings[:form_id] %>_pagination" class="pager <%= settings[:form_id] %>_pager">
3
7
  <span class="pager_pages">
4
8
  <%= will_paginate settings[:data_paginate], :container => false %>
@@ -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.0.3"
8
+ s.version = "1.0.4"
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-07-25"
12
+ s.date = "2012-08-02"
13
13
  s.description = "longer description of your gem"
14
14
  s.email = "ladislav.smola@it-logica.cz"
15
15
  s.extra_rdoc_files = [
@@ -476,7 +476,9 @@ Gem::Specification.new do |s|
476
476
  "lib/model_mixins/tree_node_class_methods.rb",
477
477
  "lib/model_mixins/tree_node_instance_methods.rb",
478
478
  "lib/table_settings.rb",
479
+ "lib/table_settings/detail_table.rb",
479
480
  "lib/table_settings/table_action.rb",
481
+ "lib/table_settings/table_button.rb",
480
482
  "lib/table_settings/table_column.rb",
481
483
  "lib/view_mixins/breadcrumb.rb",
482
484
  "lib/view_mixins/datafiles_for.rb",
@@ -39,45 +39,98 @@ module ControllerMixins
39
39
  end
40
40
  end
41
41
 
42
+ ##
43
+ # Nastavi data pro tabulku.
44
+ #
45
+ # @param [Hash] settings
46
+ # @param [User] logger_user
47
+ # @param [String] template
48
+ #
49
+ # @return [Hash | renderuje] Hash vraci pro vykresleni tabulky, renderuje pri filtrovani
42
50
  def render_table(settings, logged_user=nil, template = nil, &proc)
43
51
  settings[:template] = template unless template.blank?
44
52
  data = yield
45
53
  class_obj = data.respond_to?(:klass) ? data.klass : data
46
- if action_name == "filter"
47
- default_params = params
48
- if !params.blank? && params["clear"]
49
- default_params = settings[:default].dup
50
- default_params[:order_by] = settings[:default][:order_by] + " " + settings[:default][:order_by_direction] if !settings[:default][:order_by].blank? && !settings[:default][:order_by_direction].blank?
51
- default_params[:order_by] = settings[:default][:order] if !settings[:default][:order].blank?
52
- end
53
54
 
54
- settings = class_obj.prepare_settings(logged_user, data, settings, default_params)
55
- if !params.blank? && params["clear"]
56
- session["#{settings[:form_id]}_params"] = ""
57
- render :layout => false, :action => :index
58
- else
59
- paginate = render_to_string(:partial => "/helpers/build_table_pager", :locals => {:settings => settings})
60
- session["#{settings[:form_id]}_params"] = params
61
- if settings[:template].blank?
62
- # if there is no template a will return json and tbody renders in javascript template
63
- returned_t_body = settings.to_json
64
- else
65
- # or there is template so i will return template rendered here in ruby
66
- returned_t_body = render_to_string(:partial => settings[:template], :locals => {:settings => settings})
67
- end
55
+ filter_method = settings[:filter_method]
56
+ show_table_method = settings[:show_table_method]
57
+
58
+ default_params = set_default_params(filter_method, show_table_method, settings)
59
+
60
+ settings = class_obj.prepare_settings(logged_user, data, settings, default_params)
68
61
 
69
- render :layout => false, :json => {:settings => returned_t_body, :paginate => paginate}.to_json
62
+ # Filtrovani se renderuje zde
63
+ if is_filtering?(filter_method)
64
+
65
+ if clear_filter? # Tlacitko Smazat filtr
66
+ render_table_on_clear_filter(settings, show_table_method)
67
+ else # Ostatni filtry
68
+ render_tbody_on_filter(settings)
70
69
  end
71
- elsif action_name == "index"
72
- default_params = settings[:default].dup
73
- default_params[:order_by] = settings[:default][:order_by] + " " + settings[:default][:order_by_direction] if !settings[:default][:order_by].blank? && !settings[:default][:order_by_direction].blank?
74
- default_params[:order_by] = settings[:default][:order] if !settings[:default][:order].blank?
75
70
 
76
- default_params = session["#{settings[:form_id]}_params"] unless session["#{settings[:form_id]}_params"].blank?
77
- settings = class_obj.prepare_settings(logged_user, data, settings, default_params)
78
71
  end
72
+
73
+ # Cele vykresleni stranky normalne z metody, ktera toto zavolala
74
+ end
75
+
76
+ def set_default_params(filter_method, show_table_method, settings )
77
+ default_params = params
78
+ default_params = default_params_for_clear_filter(settings) if is_filtering?(filter_method) && clear_filter?
79
+ default_params = default_params_for_show_table(settings) if is_showing_table?(show_table_method)
80
+ default_params
81
+ end
82
+
83
+ def render_table_on_clear_filter(settings, show_table_method)
84
+ session["#{settings[:form_id]}_params"] = ""
85
+ render :layout => false, :action => (show_table_method.blank? ? :index : show_table_method)
86
+ end
87
+
88
+ def render_tbody_on_filter(settings)
89
+ paginate = render_to_string(:partial => "/helpers/build_table_pager", :locals => {:settings => settings})
90
+ session["#{settings[:form_id]}_params"] = params
91
+ if settings[:template].blank?
92
+ # if there is no template a will return json and tbody renders in javascript template
93
+ returned_t_body = settings.to_json
94
+ else
95
+ # or there is template so i will return template rendered here in ruby
96
+ returned_t_body = render_to_string(:partial => settings[:template], :locals => {:settings => settings})
97
+ end
98
+
99
+ render :layout => false, :json => {:settings => returned_t_body, :paginate => paginate}.to_json
100
+ end
101
+
102
+ def clear_filter?
103
+ !params.blank? && params["clear"]
104
+ end
105
+
106
+ def default_params_for_clear_filter(settings)
107
+ default_params = settings[:default].dup
108
+ default_params[:order_by] = settings[:default][:order_by] + " " + settings[:default][:order_by_direction] if !settings[:default][:order_by].blank? && !settings[:default][:order_by_direction].blank?
109
+ default_params[:order_by] = settings[:default][:order] if !settings[:default][:order].blank?
110
+ default_params
79
111
  end
80
112
 
113
+ def default_params_for_show_table(settings)
114
+ default_params = settings[:default].dup
115
+ default_params[:order_by] = settings[:default][:order_by] + " " + settings[:default][:order_by_direction] if !settings[:default][:order_by].blank? && !settings[:default][:order_by_direction].blank?
116
+ default_params[:order_by] = settings[:default][:order] if !settings[:default][:order].blank?
117
+
118
+ default_params = session["#{settings[:form_id]}_params"] unless session["#{settings[:form_id]}_params"].blank?
119
+ default_params
120
+ end
121
+
122
+
123
+ def is_showing_table?(show_table_method)
124
+ action_name == "index" ||
125
+ (!show_table_method.blank? && action_name == show_table_method)
126
+ end
127
+
128
+ def is_filtering?(filter_method)
129
+ action_name == "filter" ||
130
+ (!filter_method.blank? && action_name == filter_method)
131
+ end
132
+
133
+
81
134
  def fill_settings_with opts
82
135
  settings = {}
83
136
  settings[:symlink_remote] = true
@@ -1,5 +1,6 @@
1
1
  module ControllerMixins
2
2
  module TableSettingsInterface
3
+ delegate :url_helpers, to: 'Rails.application.routes'
3
4
 
4
5
  require "table_settings.rb"
5
6
 
@@ -1,7 +1,7 @@
1
1
  module ModelMixins
2
2
  module TableSettingsInterface
3
3
  def table_settings
4
- settings = TableSettings.new(self)
4
+ settings = ::TableSettings.new(self)
5
5
  yield(settings) if block_given?
6
6
  settings
7
7
  end
@@ -1,5 +1,6 @@
1
1
  require 'table_settings/table_column.rb'
2
2
  require 'table_settings/table_action.rb'
3
+ require 'table_settings/detail_table.rb'
3
4
 
4
5
  class TableSettings
5
6
 
@@ -159,6 +160,25 @@ class TableSettings
159
160
 
160
161
  self
161
162
  end
163
+ # Metoda, ze ktere se filtruje tabulka
164
+ def filter_method(name)
165
+ @settings[:filter_method] = name
166
+ self
167
+ end
168
+
169
+ # Metoda, ze ktere se vykresluje tabulka (default: index)
170
+ def on_method(name)
171
+ @settings[:show_table_method] = name
172
+ self
173
+ end
174
+ ##
175
+ # ID tagu (napr. <div>), do ktereho se ma prekreslit cela tabulka
176
+ # (napr. pro tlacitko "Smazat filtr")
177
+ #
178
+ def content_id(string)
179
+ @settings[:content_id] = string
180
+ self
181
+ end
162
182
 
163
183
  def includes(options)
164
184
  @settings[:includes] = options
@@ -0,0 +1,67 @@
1
+ class TableSettings
2
+ class DetailTable
3
+ attr_reader :hash
4
+
5
+ def initialize
6
+ @hash = {
7
+ :only => [],
8
+ :except => [],
9
+ :global_format_method => {},
10
+ :show_timestamps => false,
11
+ :show_id => false
12
+ }
13
+ end
14
+
15
+ def hash
16
+ @hash.delete(:only) if @hash[:only].empty?
17
+ @hash.delete(:except) if @hash[:except].empty?
18
+
19
+ @hash
20
+ end
21
+
22
+ def add(column)
23
+ @hash[:only] << column
24
+ self
25
+ end
26
+
27
+ def exclude(column)
28
+ @hash[:except] << column
29
+ self
30
+ end
31
+
32
+ def show_timestamps(boolean)
33
+ @hash[:show_timestamps] = boolean
34
+ self
35
+ end
36
+
37
+ def show_id(boolean)
38
+ @hash[:show_id] = boolean
39
+ self
40
+ end
41
+
42
+ def class_name(name)
43
+ @hash[:class_name] = name
44
+ self
45
+ end
46
+
47
+ def caption(name)
48
+ @hash[:caption] = caption
49
+ self
50
+ end
51
+
52
+ def global_format_method(col_name, fnc_name)
53
+ @hash[:global_format_method][:col_name] = fnc_name
54
+ self
55
+ end
56
+
57
+ def css_id(id)
58
+ @hash[:id] = id
59
+ self
60
+ end
61
+ def css_class(name)
62
+ @hash[:class] = name
63
+ self
64
+ end
65
+
66
+ end
67
+ end
@@ -0,0 +1,137 @@
1
+ class TableSettings
2
+ class Buttons
3
+ def initialize()
4
+ @buttons_hash = {}
5
+ @rows = {}
6
+ end
7
+
8
+ def hash
9
+ @rows.each_value do |row|
10
+ @buttons_hash[row.id] = row.data
11
+ end
12
+
13
+ @buttons_hash
14
+ end
15
+
16
+ def add_row(row_id)
17
+ row = TableSettings::Row.new(row_id)
18
+
19
+ yield(row) if block_given?
20
+
21
+ @rows[row_id] = row
22
+
23
+ row
24
+ end
25
+
26
+ def add_button(row_id, label, url_path = nil)
27
+ row = add_row(row_id) if @rows[row_id].nil?
28
+
29
+ button = row.add_button(label, url_path)
30
+
31
+ yield(button) if block_given?
32
+
33
+ button
34
+ end
35
+
36
+ end
37
+
38
+ class Row
39
+ attr_reader :id
40
+
41
+ def initialize(row_id)
42
+ @id = row_id
43
+ @buttons = []
44
+ end
45
+
46
+ def add_button(label, url_path = nil)
47
+ button = TableSettings::Button.new(@id, label, url_path)
48
+ yield(button) if block_given?
49
+ @buttons << button
50
+ button
51
+ end
52
+
53
+ def data
54
+ if @buttons.empty?
55
+ {}
56
+ elsif @buttons.size == 1
57
+ @buttons[0].hash
58
+ else @buttons.size > 1
59
+ @buttons.collect { |button| button.hash }
60
+ end
61
+
62
+ end
63
+
64
+ end
65
+
66
+
67
+ class Button
68
+
69
+ attr_reader :hash
70
+
71
+ def initialize(id, label, url_path)
72
+ @id = id
73
+ @hash = {:name => label}
74
+ remote(true)
75
+ url(url_path)
76
+ end
77
+
78
+ def url(path)
79
+ @hash[:url] = path
80
+ self
81
+ end
82
+
83
+ def remote(boolean)
84
+ @hash[:symlink_remote] = boolean
85
+ self
86
+ end
87
+
88
+ def outer_controller(name)
89
+ @hash[:symlink_outer_controller] = name
90
+ self
91
+ end
92
+
93
+ def outer_id(id)
94
+ @hash[:symlink_outer_id] = id
95
+ self
96
+ end
97
+
98
+ def controller(name)
99
+ @hash[:symlink_controller] = name
100
+ self
101
+ end
102
+
103
+ def action(name)
104
+ @hash[:symlink_action] = name
105
+ self
106
+ end
107
+
108
+ def method(symbol)
109
+ @hash[:method] = symbol
110
+ end
111
+
112
+ def css_class(name)
113
+ @hash[:class] = name
114
+ self
115
+ end
116
+
117
+ def css_class_type(type)
118
+ css=case type
119
+ when :show then "btn btn-success"
120
+ when :edit then "btn btn-warning"
121
+ when :destroy then "btn btn-danger"
122
+ else "btn"
123
+ end
124
+ @hash[:class] = css
125
+ self
126
+ end
127
+
128
+ def css_td_class(name)
129
+ @hash[:td_class] = name
130
+ self
131
+ end
132
+ def css_tr_class(name)
133
+ @hash[:tr_class] = name
134
+ end
135
+
136
+ end
137
+ end
@@ -64,13 +64,26 @@ class TableSettings
64
64
  :name => name,
65
65
  :label => label,
66
66
  :column_method => column_method,
67
- :filter => :find
67
+ :filter => :none
68
68
  }
69
69
  @column_hash[:column_class] = column_class unless column_class.nil?
70
70
  @column_hash[:column_params] = column_params unless column_params.nil?
71
71
 
72
72
  self
73
73
  end
74
+ def callback_params(params)
75
+ @column_hash[:column_params] = params
76
+ self
77
+ end
78
+
79
+ def callback_method(name)
80
+ @column_hash[:column_method] = name
81
+ self
82
+ end
83
+ def callback_class(name)
84
+ @column_hash[:column_class] = name
85
+ self
86
+ end
74
87
  end
75
88
 
76
89
  class StandardColumn < Column
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: it-logica-application-backbone
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-25 00:00:00.000000000 Z
12
+ date: 2012-08-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: htmlentities
16
- requirement: &75792670 !ruby/object:Gem::Requirement
16
+ requirement: &74326790 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *75792670
24
+ version_requirements: *74326790
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: shoulda
27
- requirement: &75791590 !ruby/object:Gem::Requirement
27
+ requirement: &74311020 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *75791590
35
+ version_requirements: *74311020
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rdoc
38
- requirement: &75790160 !ruby/object:Gem::Requirement
38
+ requirement: &74310720 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '3.12'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *75790160
46
+ version_requirements: *74310720
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &75789750 !ruby/object:Gem::Requirement
49
+ requirement: &74310450 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.1.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *75789750
57
+ version_requirements: *74310450
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &75277040 !ruby/object:Gem::Requirement
60
+ requirement: &74310170 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.8.4
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *75277040
68
+ version_requirements: *74310170
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: simplecov
71
- requirement: &75276750 !ruby/object:Gem::Requirement
71
+ requirement: &74309850 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *75276750
79
+ version_requirements: *74309850
80
80
  description: longer description of your gem
81
81
  email: ladislav.smola@it-logica.cz
82
82
  executables: []
@@ -544,7 +544,9 @@ files:
544
544
  - lib/model_mixins/tree_node_class_methods.rb
545
545
  - lib/model_mixins/tree_node_instance_methods.rb
546
546
  - lib/table_settings.rb
547
+ - lib/table_settings/detail_table.rb
547
548
  - lib/table_settings/table_action.rb
549
+ - lib/table_settings/table_button.rb
548
550
  - lib/table_settings/table_column.rb
549
551
  - lib/view_mixins/breadcrumb.rb
550
552
  - lib/view_mixins/datafiles_for.rb
@@ -568,7 +570,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
568
570
  version: '0'
569
571
  segments:
570
572
  - 0
571
- hash: 718720081
573
+ hash: 866527727
572
574
  required_rubygems_version: !ruby/object:Gem::Requirement
573
575
  none: false
574
576
  requirements: