rails_jq_grid 0.0.2 → 0.0.3.pre1

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -18,8 +18,8 @@ RAILS_ROOT\public\stylesheets\rails-jqgrid\themes
18
18
 
19
19
  def action
20
20
  ...
21
-
22
- @records = MyModel.all(:order => order_by, :limit => records_per_page, :offset => current_offset)
21
+ relation = MyModel.order(order_by).limit(records_per_page).offset(current_offset)
22
+ @records = relation.all
23
23
 
24
24
  respond_to do |format|
25
25
  format.html { }
@@ -35,6 +35,14 @@ RAILS_ROOT\public\stylesheets\rails-jqgrid\themes
35
35
  end
36
36
  end
37
37
 
38
+ # or shorter
39
+ respond_to :html, :json
40
+
41
+ def action
42
+ ...
43
+ respond_with(jqgrid_json(:data => @records))
44
+ end
45
+
38
46
  === View
39
47
  <head>
40
48
  ...
@@ -59,6 +67,35 @@ RAILS_ROOT\public\stylesheets\rails-jqgrid\themes
59
67
 
60
68
  a.on_select_row raw "function(){alert('test');}"
61
69
 
70
+ a.nav_grid do |n|
71
+ # Defaults
72
+ # n.add true
73
+ # n.del true
74
+ # n.edit true
75
+ # n.refresh true
76
+ # n.search true
77
+
78
+ n.prm_edit do |p|
79
+ p.close_after_edit false
80
+ end
81
+
82
+ n.prm_add do |p|
83
+ # set some options
84
+ end
85
+
86
+ n.prm_del do |p|
87
+
88
+ end
89
+
90
+ n.prm_search do |p|
91
+ end
92
+
93
+ n.prm_view do |p|
94
+ end
95
+
96
+ end
97
+
98
+
62
99
  a.column "ean" do |c|
63
100
  c.label "EAN"
64
101
  c.autowidth true
@@ -98,7 +135,7 @@ RAILS_ROOT\public\stylesheets\rails-jqgrid\themes
98
135
 
99
136
  end
100
137
 
101
- a.jqgrid "Prices Detail", "prices_detail",
138
+ a.jqgrid "prices_detail", "prices_detail",
102
139
  url_for(:controller => :prices ,
103
140
  :action => "index"),
104
141
  :caption_append_ids => true,
@@ -156,7 +193,9 @@ RAILS_ROOT\public\stylesheets\rails-jqgrid\themes
156
193
  === I18N
157
194
 
158
195
  When a column doesn't set label then human_attribute_name is used for the fieldname
159
- to guess the label. To use I18N just setup your local and create a local file like:
196
+ to guess the label. This also applys to grid title.
197
+
198
+ To use I18N just setup your local and create a local file like:
160
199
 
161
200
  -RAILS_ROOT
162
201
  |-config
@@ -166,8 +205,9 @@ RAILS_ROOT\public\stylesheets\rails-jqgrid\themes
166
205
  content for en.yml:
167
206
  en:
168
207
  attributes:
169
- col1: "Label for Col1"
170
- col2: "Label for Col2"
208
+ prices_detail: "Prices details table"
209
+ col1: "Label for col1"
210
+ col2: "Label for col2"
171
211
 
172
212
 
173
213
 
data/Rakefile CHANGED
@@ -1,3 +1,13 @@
1
+
2
+ # This program is free software; you can redistribute it and/or
3
+ # modify it under the terms of the GNU General Public License
4
+ # as published by the Free Software Foundation; either version 3
5
+ # of the License, or (at your option) any later version.
6
+
7
+ # Author:: Dieter Spaeth (mailto:dieter.spaeth@gmx.de)
8
+ # Copyright:: Copyright (c) 2010 Dieter Spaeth
9
+
10
+
1
11
  require 'rubygems'
2
12
  require "rake"
3
13
  require 'rake/testtask'
@@ -8,6 +18,7 @@ begin
8
18
  Jeweler::Tasks.new do |gem|
9
19
  gem.name = "rails_jq_grid"
10
20
  gem.summary = "Add JqGrid to your Rails 3 app"
21
+ gem.description = "This gems is a Rails 3 Enginge that helps you to create jqGrid. It's bundled with jqGrid and some themes."
11
22
  gem.email = "dieter.spaeth@gmx.de"
12
23
  gem.authors = ["Dieter Spaeth"]
13
24
  gem.homepage = "http://github.com/consu/rails-jqgrid"
@@ -43,5 +54,5 @@ Rake::RDocTask.new do |rdoc|
43
54
  rdoc.rdoc_dir = 'rdoc'
44
55
  rdoc.title = "ko #{version}"
45
56
  rdoc.rdoc_files.include('README*')
46
- rdoc.rdoc_files.include('lib/**/*.rb')
57
+ rdoc.rdoc_files.include('lib/**/*.rb', 'app/**/*.rb')
47
58
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3.pre1
@@ -1,5 +1,11 @@
1
- # To change this template, choose Tools | Templates
2
- # and open the template in the editor.
1
+
2
+ # This program is free software; you can redistribute it and/or
3
+ # modify it under the terms of the GNU General Public License
4
+ # as published by the Free Software Foundation; either version 3
5
+ # of the License, or (at your option) any later version.
6
+
7
+ # Author:: Dieter Spaeth (mailto:dieter.spaeth@gmx.de)
8
+ # Copyright:: Copyright (c) 2010 Dieter Spaeth
3
9
 
4
10
  module RailsJqGrid
5
11
  module JqGridCssHelper
@@ -7,12 +13,17 @@ module RailsJqGrid
7
13
  JQUERY_UI_THEMES_BASE = STYLESHEETS_BASE + "/themes"
8
14
  JQUERY_UI_VERSION = "1.8.4"
9
15
 
16
+ # Includes the following stylesheets:
17
+ # * ui.jqgrid.css
18
+ # * /stylesheets/rails-jqgrid/themes/[theme_name]/jquery-ui-...custom.css
19
+ # options:: :theme name of the theme folder, default start
10
20
  def jqgrid_stylesheets_tags(options={})
11
21
  [jqgrid_ui_stylesheet_tag(options),
12
22
  jquery_ui_stylesheet_tag(options)
13
23
  ].join("\n").html_safe
14
24
  end
15
25
 
26
+ protected
16
27
  def jqgrid_ui_stylesheet_tag(options={})
17
28
  (stylesheet_link_tag STYLESHEETS_BASE + "/ui.jqgrid.css").html_safe
18
29
  end
@@ -1,5 +1,12 @@
1
- # To change this template, choose Tools | Templates
2
- # and open the template in the editor.
1
+
2
+ # This program is free software; you can redistribute it and/or
3
+ # modify it under the terms of the GNU General Public License
4
+ # as published by the Free Software Foundation; either version 3
5
+ # of the License, or (at your option) any later version.
6
+
7
+ # Author:: Dieter Spaeth (mailto:dieter.spaeth@gmx.de)
8
+ # Copyright:: Copyright (c) 2010 Dieter Spaeth
9
+
3
10
 
4
11
  require 'rails_jq_grid/jq_grid'
5
12
 
@@ -9,6 +16,7 @@ module RailsJqGrid
9
16
  include JqGridJsHelper
10
17
  include JqGridCssHelper
11
18
 
19
+ # Creates javascript-code for jqGrid
12
20
  def jqgrid(title, dom_id, url_for_options, options={}, &option_block)
13
21
  if url_for_options.is_a?(Hash)
14
22
  url_for_options[:controller]||=controller.controller_name
@@ -1,11 +1,23 @@
1
- # To change this template, choose Tools | Templates
2
- # and open the template in the editor.
1
+
2
+ # This program is free software; you can redistribute it and/or
3
+ # modify it under the terms of the GNU General Public License
4
+ # as published by the Free Software Foundation; either version 3
5
+ # of the License, or (at your option) any later version.
6
+
7
+ # Author:: Dieter Spaeth (mailto:dieter.spaeth@gmx.de)
8
+ # Copyright:: Copyright (c) 2010 Dieter Spaeth
9
+
3
10
 
4
11
  module RailsJqGrid
5
12
  module JqGridJsHelper
6
13
  JS_BASE = "/javascripts/rails-jqgrid"
7
14
  JQUERY_VERSION = "1.4.2"
8
15
 
16
+ # Includes the following javascript libraries:
17
+ # * jquery-...min.js
18
+ # * jquery.jqGrid.min.js
19
+ # * grid.locale-...js
20
+ # options:: :local local to use, default :en
9
21
  def jqgrid_js_tags(options={})
10
22
  [jquery_js_tag,
11
23
  jqgrid_i18n_js_tag(options),
@@ -13,6 +25,7 @@ module RailsJqGrid
13
25
  ].join("\n").html_safe
14
26
  end
15
27
 
28
+ protected
16
29
  def jquery_js_tag
17
30
  (javascript_include_tag JS_BASE + "/jquery-#{JQUERY_VERSION}.min.js").html_safe
18
31
  end
@@ -1,5 +1,11 @@
1
- # To change this template, choose Tools | Templates
2
- # and open the template in the editor.
1
+
2
+ # This program is free software; you can redistribute it and/or
3
+ # modify it under the terms of the GNU General Public License
4
+ # as published by the Free Software Foundation; either version 3
5
+ # of the License, or (at your option) any later version.
6
+
7
+ # Author:: Dieter Spaeth (mailto:dieter.spaeth@gmx.de)
8
+ # Copyright:: Copyright (c) 2010 Dieter Spaeth
3
9
 
4
10
  module RailsJqGrid
5
11
  class JqGrid
@@ -12,7 +18,7 @@ module RailsJqGrid
12
18
  include JqGridMethodMissing
13
19
 
14
20
  attr_accessor :title, :dom_id, :columns_data, :detail_grids, :sub_grid_data,
15
- :proc_binding, :options
21
+ :proc_binding, :options, :nav_grid_data
16
22
 
17
23
  DEFAULT_OPTIONS = {:row_num => '10',
18
24
  :row_list => [10,25,50,100],
@@ -53,6 +59,8 @@ module RailsJqGrid
53
59
  self.proc_binding = option_block.binding
54
60
  self.options = options
55
61
 
62
+ self.nav_grid_data = JqGridNavGrid.new(dom_id, pager_id)
63
+
56
64
  #fancier syntax, but heavier to handle
57
65
  #self.instance_eval(&option_block) if block_given?
58
66
 
@@ -102,7 +110,7 @@ module RailsJqGrid
102
110
  end
103
111
 
104
112
  def column(field,&block)
105
- find_or_create_column(field).set_column_options(&block)
113
+ find_or_create_column(field).set_jqgrid_options(&block)
106
114
  end
107
115
 
108
116
  def find_or_create_column(field)
@@ -114,6 +122,10 @@ module RailsJqGrid
114
122
  col
115
123
  end
116
124
 
125
+ def nav_grid(&block)
126
+ self.nav_grid_data.set_jqgrid_options(&block)
127
+ end
128
+
117
129
  def to_html
118
130
  parts =[]
119
131
  parts << javascript_tag(jq_grid_function_js)
@@ -171,64 +183,14 @@ module RailsJqGrid
171
183
  end
172
184
 
173
185
  def nav_grid_js
174
- params=[nav_grid_parameters]
175
- params.push(nav_grid_restful_extensions).flatten! if is_restful?
186
+ self.nav_grid_data.restfull = is_restful?
176
187
 
177
- <<-EO_JS
178
- jQuery("##{dom_id}").jqGrid('navGrid','##{pager_id}',#{params.join(",\n")} );
179
- EO_JS
188
+ nav_grid_data.to_js
180
189
  end
181
190
 
182
191
  def is_restful?
183
192
  self.options[:restful]
184
- end
185
-
186
- def nav_grid_parameters
187
- <<-EO_JS
188
- {edit:#{jq_grid_js_options[:edit]},
189
- add:#{jq_grid_js_options[:add]},
190
- del:#{jq_grid_js_options[:delete]},
191
- search:#{jq_grid_js_options[:search]},
192
- refresh:#{jq_grid_js_options[:refresh]}
193
- }
194
- EO_JS
195
- end
196
-
197
- def nav_grid_restful_extensions
198
- #url = articles_path
199
- [restful_param_edit, restful_param_add, restful_param_delete]
200
- end
201
-
202
- def restful_param_edit
203
- <<-EO_JS
204
- { mtype: "PUT",
205
- onclickSubmit: function(rp_ge, postdata) {
206
- selrow = jQuery("##{dom_id}").jqGrid('getGridParam','selrow');
207
- if (selrow!=null){
208
- rp_ge.url = jQuery("##{dom_id}").jqGrid('getGridParam','editurl') + '/' + selrow;
209
- }
210
- return {};
211
- }
212
- }
213
- EO_JS
214
- end
215
-
216
- def restful_param_add
217
- <<-EO_JS
218
- { mtype: "POST" }
219
- EO_JS
220
- end
221
-
222
- def restful_param_delete
223
- <<-EO_JS
224
- { mtype: "DELETE",
225
- onclickSubmit: function(rp_ge, postdata) {
226
- rp_ge.url = jQuery("##{dom_id}").jqGrid('getGridParam','editurl') + '/' + postdata
227
- return {};
228
- }
229
- }
230
- EO_JS
231
- end
193
+ end
232
194
 
233
195
  def detail_grids_html
234
196
  self.detail_grids.map do |detail_grid|
@@ -1,7 +1,15 @@
1
- # To change this template, choose Tools | Templates
2
- # and open the template in the editor.
1
+
2
+ # This program is free software; you can redistribute it and/or
3
+ # modify it under the terms of the GNU General Public License
4
+ # as published by the Free Software Foundation; either version 3
5
+ # of the License, or (at your option) any later version.
6
+
7
+ # Author:: Dieter Spaeth (mailto:dieter.spaeth@gmx.de)
8
+ # Copyright:: Copyright (c) 2010 Dieter Spaeth
9
+
3
10
 
4
11
  module RailsJqGrid
12
+ # Container for all options and methods for a column in jqgrid
5
13
  class JqGridColumn
6
14
  extend ActiveModel::Translation
7
15
 
@@ -13,17 +21,10 @@ module RailsJqGrid
13
21
  self.field = field
14
22
  self.init_jq_grid_js_options "name" => field, "index" => field
15
23
 
16
- self.label JqGridColumn.human_attribute_name(field)
17
-
18
- #fancier syntax, but heavier to handle
19
- #self.instance_eval(&option_block) if block_given?
20
-
21
- set_column_options(&option_block)
22
- end
24
+ self.label JqGridColumn.human_attribute_name(field)
23
25
 
24
- def set_column_options(&option_block)
25
- option_block.call(self) if block_given?
26
- end
26
+ set_jqgrid_options(&option_block)
27
+ end
27
28
 
28
29
  def name
29
30
  self.jq_grid_js_options[:label]
@@ -1,36 +1,41 @@
1
- # To change this template, choose Tools | Templates
2
- # and open the template in the editor.
1
+
2
+ # This program is free software; you can redistribute it and/or
3
+ # modify it under the terms of the GNU General Public License
4
+ # as published by the Free Software Foundation; either version 3
5
+ # of the License, or (at your option) any later version.
6
+
7
+ # Author:: Dieter Spaeth (mailto:dieter.spaeth@gmx.de)
8
+ # Copyright:: Copyright (c) 2010 Dieter Spaeth
9
+
3
10
 
4
11
  module RailsJqGrid
12
+
13
+ # Method-Missing implementation
14
+ # converts unknown method to options
15
+ # and save it's values
5
16
  module JqGridMethodMissing
6
17
  attr_accessor :jq_grid_js_options
7
18
 
8
- def method_missing(symbol, *args, &block)
9
- #method_name = symbol.to_s
10
- #if method_name.eql?("url_for") || method_name =~ /_path$/
11
- # call_parent symbol, *args, &block
12
- #else
13
- # RAILS_DEFAULT_LOGGER.debug "Method Missing #{symbol} #{args.inspect}"
19
+ # every unknown method is treated as a jqgrid
20
+ # option oder method name
21
+ def method_missing(symbol, *args, &block)
14
22
  self.jq_grid_js_options ||={}
15
23
  self.jq_grid_js_options[symbol] = JqGridOptionOrMethod.new(symbol, args[0])
16
24
  #end
17
- end
18
-
19
- # def call_parent(*args)
20
- # # Dirty Hack to get url_for to work
21
- # # when called from a detail jqgrid in a block
22
- # parent_context = eval('self', self.proc_binding)
23
- # parent_context.send *args
24
- # end
25
+ end
25
26
 
27
+ # Values market with raw are not convertet to_json
28
+ # they will be outputet as they are see JqGridOptionOrMethod.escaped_value
26
29
  def raw(*args)
27
30
  {:type => :raw, :value => args[0]}
28
31
  end
29
32
 
33
+ # returns the value of a option
30
34
  def get_jq_grid_js_options(symbol)
31
35
  self.jq_grid_js_options[symbol]
32
36
  end
33
37
 
38
+ # initialize options with default values
34
39
  def init_jq_grid_js_options(new_options)
35
40
  self.jq_grid_js_options ||={}
36
41
  new_options.each do |key, value|
@@ -38,6 +43,7 @@ module RailsJqGrid
38
43
  end
39
44
  end
40
45
 
46
+ # converts options to a string for jqgrid
41
47
  def options_to_jqgrid_options
42
48
  jqgrid_options = []
43
49
  self.jq_grid_js_options.each_value { |option|
@@ -46,5 +52,9 @@ module RailsJqGrid
46
52
  jqgrid_options.sort.join(",\n ")
47
53
  end
48
54
 
55
+ def set_jqgrid_options(&option_block)
56
+ option_block.call(self) if block_given?
57
+ end
58
+
49
59
  end
50
60
  end
@@ -0,0 +1,133 @@
1
+
2
+ # This program is free software; you can redistribute it and/or
3
+ # modify it under the terms of the GNU General Public License
4
+ # as published by the Free Software Foundation; either version 3
5
+ # of the License, or (at your option) any later version.
6
+
7
+ # Author:: Dieter Spaeth (mailto:dieter.spaeth@gmx.de)
8
+ # Copyright:: Copyright (c) 2010 Dieter Spaeth
9
+
10
+ module RailsJqGrid
11
+ class JqGridNavGrid
12
+ include JqGridMethodMissing
13
+
14
+ DEFAULT_OPTIONS = {:add => true,
15
+ :del => true,
16
+ :edit => true,
17
+ :refresh => true,
18
+ :search => true,
19
+ }
20
+
21
+ DEFAULT_PRM_OPTIONS = { :close_after_add => true,
22
+ :close_after_edit => true,
23
+ :close_on_escape => true
24
+ }
25
+
26
+ attr_accessor :dom_id, :pager_id, :restfull,
27
+ :prm_edit_data, :prm_add_data, :prm_del_data, :prm_search_data,
28
+ :prm_view_data
29
+
30
+
31
+
32
+ def initialize(dom_id, pager_id , &option_block)
33
+ self.dom_id = dom_id
34
+ self.pager_id = pager_id
35
+
36
+ self.prm_edit_data = JqGridNavGridParameter.new(DEFAULT_PRM_OPTIONS)
37
+ self.prm_add_data = JqGridNavGridParameter.new(DEFAULT_PRM_OPTIONS)
38
+ self.prm_del_data = JqGridNavGridParameter.new(DEFAULT_PRM_OPTIONS)
39
+ self.prm_search_data = JqGridNavGridParameter.new(DEFAULT_PRM_OPTIONS)
40
+ self.prm_view_data = JqGridNavGridParameter.new(DEFAULT_PRM_OPTIONS)
41
+
42
+ self.init_jq_grid_js_options DEFAULT_OPTIONS
43
+
44
+ option_block.call(self) if block_given?
45
+ end
46
+
47
+ def prm_edit(&block)
48
+ prm_edit_data.set_jqgrid_options(&block)
49
+ end
50
+
51
+ def prm_add(&block)
52
+ prm_add_data.set_jqgrid_options(&block)
53
+ end
54
+
55
+ def prm_del(&block)
56
+ prm_del_data.set_jqgrid_options(&block)
57
+ end
58
+
59
+ def prm_search(&block)
60
+ prm_search_data.set_jqgrid_options(&block)
61
+ end
62
+
63
+ def prm_view(&block)
64
+ prm_view_data.set_jqgrid_options(&block)
65
+ end
66
+
67
+
68
+ def to_js
69
+ params=[nav_grid_parameters]
70
+
71
+ if is_restful?
72
+ set_nav_grid_restful_extensions
73
+ end
74
+
75
+ params.push([prm_edit_data.to_js,
76
+ prm_add_data.to_js,
77
+ prm_del_data.to_js,
78
+ prm_search_data.to_js,
79
+ prm_view_data.to_js]).flatten!
80
+
81
+ <<-EO_JS
82
+ jQuery("##{dom_id}").jqGrid('navGrid','##{pager_id}',#{params.join(",\n")} );
83
+ EO_JS
84
+ end
85
+
86
+ def nav_grid_parameters
87
+ <<-EO_JS
88
+ {
89
+ #{options_to_jqgrid_options}
90
+ }
91
+ EO_JS
92
+ end
93
+
94
+ def set_nav_grid_restful_extensions
95
+ restful_param_edit
96
+ restful_param_add
97
+ restful_param_delete
98
+ end
99
+
100
+ def restful_param_edit
101
+ prm_edit_data.mtype "PUT"
102
+ prm_edit_data.onclick_submit raw <<-EO_JS
103
+ function(rp_ge, postdata) {
104
+ selrow = jQuery("##{dom_id}").jqGrid('getGridParam','selrow');
105
+ if (selrow!=null){
106
+ rp_ge.url = jQuery("##{dom_id}").jqGrid('getGridParam','editurl') + '/' + selrow;
107
+ }
108
+ return {};
109
+ }
110
+ EO_JS
111
+ end
112
+
113
+ def restful_param_add
114
+ prm_add_data.mtype "POST"
115
+ end
116
+
117
+ def restful_param_delete
118
+ prm_del_data.mtype "DELETE"
119
+ prm_del_data.onclick_submit raw <<-EO_JS
120
+ function(rp_ge, postdata) {
121
+ rp_ge.url = jQuery("##{dom_id}").jqGrid('getGridParam','editurl') + '/' + postdata
122
+ return {};
123
+ }
124
+ EO_JS
125
+ end
126
+
127
+ def is_restfull?
128
+ self.restfull
129
+ end
130
+
131
+
132
+ end
133
+ end
@@ -0,0 +1,31 @@
1
+
2
+ # This program is free software; you can redistribute it and/or
3
+ # modify it under the terms of the GNU General Public License
4
+ # as published by the Free Software Foundation; either version 3
5
+ # of the License, or (at your option) any later version.
6
+
7
+ # Author:: Dieter Spaeth (mailto:dieter.spaeth@gmx.de)
8
+ # Copyright:: Copyright (c) 2010 Dieter Spaeth
9
+
10
+ module RailsJqGrid
11
+ class JqGridNavGridParameter
12
+ include JqGridMethodMissing
13
+
14
+ def initialize(default_options = {}, &option_block)
15
+ self.jq_grid_js_options ||={}
16
+
17
+ self.init_jq_grid_js_options default_options
18
+
19
+ option_block.call(self) if block_given?
20
+ end
21
+
22
+ def to_js
23
+ <<-EO_JS
24
+ {
25
+ #{options_to_jqgrid_options}
26
+ }
27
+ EO_JS
28
+ end
29
+
30
+ end
31
+ end
@@ -1,7 +1,16 @@
1
- # To change this template, choose Tools | Templates
2
- # and open the template in the editor.
1
+
2
+ # This program is free software; you can redistribute it and/or
3
+ # modify it under the terms of the GNU General Public License
4
+ # as published by the Free Software Foundation; either version 3
5
+ # of the License, or (at your option) any later version.
6
+
7
+ # Author:: Dieter Spaeth (mailto:dieter.spaeth@gmx.de)
8
+ # Copyright:: Copyright (c) 2010 Dieter Spaeth
9
+
3
10
 
4
11
  module RailsJqGrid
12
+
13
+ # Contains all information for one option or method
5
14
  class JqGridOptionOrMethod
6
15
  include ActiveSupport::Inflector
7
16
 
@@ -20,16 +29,22 @@ module RailsJqGrid
20
29
 
21
30
  end
22
31
 
32
+ # works like JqGridMethodMissing.raw
23
33
  def <<(*args)
24
34
  RAILS_DEFAULT_LOGGER.debug "#{args.inspect}"
25
35
  self.type = :raw
26
36
  self.value = args[0]
27
37
  end
28
38
 
39
+ # option name ist camalized with a lower start character
40
+ # transforms from ruby style to jqgrid style
41
+ # before_submit => beforeSubmit
29
42
  def escaped_name
30
43
  self.name.to_s.camelize(:lower)
31
44
  end
32
45
 
46
+ # every value is transformed to json
47
+ # as lang es it isn't marked es raw
33
48
  def escaped_value
34
49
  if self.type == :raw
35
50
  self.value
@@ -1,5 +1,12 @@
1
- # To change this template, choose Tools | Templates
2
- # and open the template in the editor.
1
+
2
+ # This program is free software; you can redistribute it and/or
3
+ # modify it under the terms of the GNU General Public License
4
+ # as published by the Free Software Foundation; either version 3
5
+ # of the License, or (at your option) any later version.
6
+
7
+ # Author:: Dieter Spaeth (mailto:dieter.spaeth@gmx.de)
8
+ # Copyright:: Copyright (c) 2010 Dieter Spaeth
9
+
3
10
 
4
11
  module RailsJqGrid
5
12
  module ActsAsJqGridAble
@@ -8,7 +15,8 @@ module RailsJqGrid
8
15
  end
9
16
 
10
17
  module ActsAsClassMethod
11
- ## any method placed here will apply to classes, like Hickwall
18
+ # any method placed here will apply to classes
19
+
12
20
  def acts_as_jqgrid_able
13
21
  send :include, InstanceMethods
14
22
  cattr_accessor :allowed_order_by_cols
@@ -18,16 +26,25 @@ module RailsJqGrid
18
26
  end
19
27
 
20
28
  module ClassMethods
29
+
30
+ # Contains an array of column names which can safely be used
31
+ # for order by. Columns not configured here can't be user
32
+ # by #order_by
21
33
  def order_by_cols(*args)
22
34
  self.allowed_order_by_cols ||= []
23
35
  self.allowed_order_by_cols.push(args.map{|arg| arg.to_s})
24
36
  self.allowed_order_by_cols.flatten!
25
-
26
- logger.info "Array: " + self.allowed_order_by_cols.inspect
37
+
27
38
  end
28
39
  end
29
40
 
30
41
  module InstanceMethods
42
+
43
+ # creates json string for jqGrid
44
+ # options:: :total_records count records totaly to display in grid, default :data.count
45
+ # :default_records_per_page when nothing is specified how many
46
+ # records are shown on a page, default :data.count
47
+ # :data the records as an array
31
48
  def jqgrid_json(options)
32
49
  options[:total_records] ||= options[:data].count
33
50
  options[:default_records_per_page] ||= options[:data].count
@@ -41,18 +58,25 @@ module RailsJqGrid
41
58
  json_data.to_json
42
59
  end
43
60
 
61
+ # calculates the current offset by page and records per page
44
62
  def current_offset(default_recs_per_page = 10)
45
63
  (current_page - 1) * records_per_page(default_recs_per_page)
46
64
  end
47
65
 
66
+ # returns the current page retrieved from jqgrid request
67
+ # default 1
48
68
  def current_page
49
69
  (params[:page] || 1).to_i
50
70
  end
51
71
 
72
+ # returns records per page retrieved from jqgrid request
73
+ # default 1
52
74
  def records_per_page(default_recs_per_page = 10)
53
75
  (params[:rows] || default_recs_per_page).to_i
54
76
  end
55
77
 
78
+ # tests jqgrid request parameter sidx and sord
79
+ # and returns a sanatized order by statement
56
80
  def order_by
57
81
  order_column = params[:sidx] || ""
58
82
 
@@ -1,18 +1,19 @@
1
+
2
+ # This program is free software; you can redistribute it and/or
3
+ # modify it under the terms of the GNU General Public License
4
+ # as published by the Free Software Foundation; either version 3
5
+ # of the License, or (at your option) any later version.
6
+
7
+ # Author:: Dieter Spaeth (mailto:dieter.spaeth@gmx.de)
8
+ # Copyright:: Copyright (c) 2010 Dieter Spaeth
9
+
10
+
1
11
  require 'rails_jq_grid'
2
12
  require 'rails'
3
13
 
4
14
  module RailsJqGrid
5
15
  class Engine < Rails::Engine
6
- config.autoload_paths += %W(#{config.root}/lib)
7
-
8
- # paths.app.controllers = "app/controllers"
9
- # paths.app.helpers = "app/helpers"
10
- # paths.app.models = "app/models"
11
- # paths.app.views = "app/views"
12
- # paths.lib "lib"
13
- # paths.lib.tasks "lib/tasks", :glob => "**/*.rake"
14
-
15
-
16
+ config.autoload_paths += %W(#{config.root}/lib)
16
17
 
17
18
  initializer "static assets" do |app|
18
19
  app.middleware.use ::ActionDispatch::Static, "#{root}/public"
data/lib/rails_jq_grid.rb CHANGED
@@ -1,7 +1,16 @@
1
+
2
+ # This program is free software; you can redistribute it and/or
3
+ # modify it under the terms of the GNU General Public License
4
+ # as published by the Free Software Foundation; either version 3
5
+ # of the License, or (at your option) any later version.
6
+
7
+ # Author:: Dieter Spaeth (mailto:dieter.spaeth@gmx.de)
8
+ # Copyright:: Copyright (c) 2010 Dieter Spaeth
9
+
10
+
1
11
  module RailsJqGrid
2
12
  if defined?(Rails)
3
- require 'rails_jq_grid/engine'
4
- #require 'rails_jq_grid/jq_grid'
13
+ require 'rails_jq_grid/engine'
5
14
  end
6
15
  end
7
16
 
@@ -5,11 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{rails_jq_grid}
8
- s.version = "0.0.2"
8
+ s.version = "0.0.3.pre1"
9
9
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
10
+ s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Dieter Spaeth"]
12
- s.date = %q{2010-10-04}
12
+ s.date = %q{2010-10-10}
13
+ s.description = %q{This gems is a Rails 3 Enginge that helps you to create jqGrid. It's bundled with jqGrid and some themes.}
13
14
  s.email = %q{dieter.spaeth@gmx.de}
14
15
  s.extra_rdoc_files = [
15
16
  "README.rdoc"
@@ -26,10 +27,11 @@ Gem::Specification.new do |s|
26
27
  "app/models/rails_jq_grid/jq_grid.rb",
27
28
  "app/models/rails_jq_grid/jq_grid_column.rb",
28
29
  "app/models/rails_jq_grid/jq_grid_method_missing.rb",
30
+ "app/models/rails_jq_grid/jq_grid_nav_grid.rb",
31
+ "app/models/rails_jq_grid/jq_grid_nav_grid_parameter.rb",
29
32
  "app/models/rails_jq_grid/jq_grid_option_or_method.rb",
30
33
  "lib/rails_jq_grid.rb",
31
34
  "lib/rails_jq_grid/acts_as_jq_grid_able.rb",
32
- "lib/rails_jq_grid/acts_as_jq_grid_data_source.rb",
33
35
  "lib/rails_jq_grid/engine.rb",
34
36
  "lib/tasks/rails_jq_grid.rake",
35
37
  "public/javascripts/rails-jqgrid/Changes.txt",
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_jq_grid
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease: false
4
+ hash: 270495468
5
+ prerelease: true
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ - pre1
11
+ version: 0.0.3.pre1
11
12
  platform: ruby
12
13
  authors:
13
14
  - Dieter Spaeth
@@ -15,7 +16,7 @@ autorequire:
15
16
  bindir: bin
16
17
  cert_chain: []
17
18
 
18
- date: 2010-10-04 00:00:00 +02:00
19
+ date: 2010-10-10 00:00:00 +02:00
19
20
  default_executable:
20
21
  dependencies:
21
22
  - !ruby/object:Gem::Dependency
@@ -34,7 +35,7 @@ dependencies:
34
35
  version: 1.2.9
35
36
  type: :development
36
37
  version_requirements: *id001
37
- description:
38
+ description: This gems is a Rails 3 Enginge that helps you to create jqGrid. It's bundled with jqGrid and some themes.
38
39
  email: dieter.spaeth@gmx.de
39
40
  executables: []
40
41
 
@@ -54,10 +55,11 @@ files:
54
55
  - app/models/rails_jq_grid/jq_grid.rb
55
56
  - app/models/rails_jq_grid/jq_grid_column.rb
56
57
  - app/models/rails_jq_grid/jq_grid_method_missing.rb
58
+ - app/models/rails_jq_grid/jq_grid_nav_grid.rb
59
+ - app/models/rails_jq_grid/jq_grid_nav_grid_parameter.rb
57
60
  - app/models/rails_jq_grid/jq_grid_option_or_method.rb
58
61
  - lib/rails_jq_grid.rb
59
62
  - lib/rails_jq_grid/acts_as_jq_grid_able.rb
60
- - lib/rails_jq_grid/acts_as_jq_grid_data_source.rb
61
63
  - lib/rails_jq_grid/engine.rb
62
64
  - lib/tasks/rails_jq_grid.rake
63
65
  - public/javascripts/rails-jqgrid/Changes.txt
@@ -223,12 +225,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
223
225
  required_rubygems_version: !ruby/object:Gem::Requirement
224
226
  none: false
225
227
  requirements:
226
- - - ">="
228
+ - - ">"
227
229
  - !ruby/object:Gem::Version
228
- hash: 3
230
+ hash: 25
229
231
  segments:
230
- - 0
231
- version: "0"
232
+ - 1
233
+ - 3
234
+ - 1
235
+ version: 1.3.1
232
236
  requirements: []
233
237
 
234
238
  rubyforge_project:
@@ -1,34 +0,0 @@
1
-
2
- module RailsJqGrid
3
- module ActsAsJqGridDataSource
4
-
5
- # To include this Module parente Class has to define
6
- # [] each and count
7
- def self.included(base)
8
- base.send :extend, ClassMethods
9
- end
10
-
11
- module ClassMethods
12
- ## any method placed here will apply to classes, like Hickwall
13
- def acts_as_jqgrid
14
- send :include, InstanceMethods
15
- end
16
-
17
- def to_jqgrid_data(current_page=nil, records_per_page=nil)
18
- current_page ||= 1
19
- records_per_page ||= count
20
- total_records = count
21
- total_pages = (count + records_per_page - 1).div(records_per_page)
22
-
23
- json_data = {:currentpage => current_page, :totalpages => total_pages , :totalrecords => total_records }
24
-
25
- end
26
-
27
- end
28
-
29
- module InstanceMethods
30
-
31
- end
32
- end
33
-
34
- end