rails_jq_grid 0.0.2 → 0.0.3.pre1

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/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