rails_jq_grid 0.0.2
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/COPYRIGHT.txt +17 -0
- data/GPL-LICENSE +675 -0
- data/README.rdoc +176 -0
- data/Rakefile +47 -0
- data/VERSION +1 -0
- data/app/helpers/rails_jq_grid/jq_grid_css_helper.rb +29 -0
- data/app/helpers/rails_jq_grid/jq_grid_helper.rb +21 -0
- data/app/helpers/rails_jq_grid/jq_grid_js_helper.rb +30 -0
- data/app/models/rails_jq_grid/jq_grid.rb +315 -0
- data/app/models/rails_jq_grid/jq_grid_column.rb +33 -0
- data/app/models/rails_jq_grid/jq_grid_method_missing.rb +50 -0
- data/app/models/rails_jq_grid/jq_grid_option_or_method.rb +46 -0
- data/lib/rails_jq_grid/acts_as_jq_grid_able.rb +76 -0
- data/lib/rails_jq_grid/acts_as_jq_grid_data_source.rb +34 -0
- data/lib/rails_jq_grid/engine.rb +23 -0
- data/lib/rails_jq_grid.rb +7 -0
- data/lib/tasks/rails_jq_grid.rake +1 -0
- data/public/javascripts/rails-jqgrid/Changes.txt +1160 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-bg.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-bg1251.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-cat.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-cn.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-cs.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-de.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-dk.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-el.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-en.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-es.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-fa.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-fi.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-fr.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-he.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-hu.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-is.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-it.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-ja.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-nl.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-no.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-pl.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-pt-br.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-pt.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-ro.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-ru.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-sk.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-sv.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-tr.js +1 -0
- data/public/javascripts/rails-jqgrid/i18n/grid.locale-ua.js +1 -0
- data/public/javascripts/rails-jqgrid/install.txt +43 -0
- data/public/javascripts/rails-jqgrid/jquery-1.4.2.min.js +154 -0
- data/public/javascripts/rails-jqgrid/jquery-ui-1.8.4.custom.min.js +763 -0
- data/public/javascripts/rails-jqgrid/jquery.jqGrid.min.js +445 -0
- data/public/javascripts/rails-jqgrid/src/JsonXml.js +330 -0
- data/public/javascripts/rails-jqgrid/src/css/ellipsis-xbl.xml +13 -0
- data/public/javascripts/rails-jqgrid/src/css/jquery.searchFilter.css +7 -0
- data/public/javascripts/rails-jqgrid/src/css/ui.jqgrid.css +129 -0
- data/public/javascripts/rails-jqgrid/src/css/ui.multiselect.css +30 -0
- data/public/javascripts/rails-jqgrid/src/grid.base.js +3003 -0
- data/public/javascripts/rails-jqgrid/src/grid.celledit.js +486 -0
- data/public/javascripts/rails-jqgrid/src/grid.common.js +636 -0
- data/public/javascripts/rails-jqgrid/src/grid.custom.js +818 -0
- data/public/javascripts/rails-jqgrid/src/grid.formedit.js +1872 -0
- data/public/javascripts/rails-jqgrid/src/grid.import.js +201 -0
- data/public/javascripts/rails-jqgrid/src/grid.inlinedit.js +250 -0
- data/public/javascripts/rails-jqgrid/src/grid.jqueryui.js +503 -0
- data/public/javascripts/rails-jqgrid/src/grid.loader.js +47 -0
- data/public/javascripts/rails-jqgrid/src/grid.postext.js +64 -0
- data/public/javascripts/rails-jqgrid/src/grid.setcolumns.js +126 -0
- data/public/javascripts/rails-jqgrid/src/grid.subgrid.js +260 -0
- data/public/javascripts/rails-jqgrid/src/grid.tbltogrid.js +106 -0
- data/public/javascripts/rails-jqgrid/src/grid.treegrid.js +483 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-bg.js +132 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-bg1251.js +132 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-cat.js +128 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-cn.js +132 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-cs.js +128 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-de.js +128 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-dk.js +128 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-el.js +126 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-en.js +128 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-es.js +128 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-fa.js +125 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-fi.js +130 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-fr.js +126 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-he.js +127 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-hu.js +129 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-is.js +126 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-it.js +1 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-ja.js +155 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-nl.js +149 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-no.js +1 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-pl.js +127 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-pt-br.js +127 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-pt.js +125 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-ro.js +139 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-ru.js +127 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-sk.js +127 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-sv.js +127 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-tr.js +126 -0
- data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-ua.js +127 -0
- data/public/javascripts/rails-jqgrid/src/jqDnR.js +68 -0
- data/public/javascripts/rails-jqgrid/src/jqModal.js +69 -0
- data/public/javascripts/rails-jqgrid/src/jquery.fmatter.js +542 -0
- data/public/javascripts/rails-jqgrid/src/jquery.searchFilter.js +716 -0
- data/public/javascripts/rails-jqgrid/src/ui.multiselect.js +314 -0
- data/public/stylesheets/rails-jqgrid/ellipsis-xbl.xml +13 -0
- data/public/stylesheets/rails-jqgrid/themes/AUTHORS.txt +30 -0
- data/public/stylesheets/rails-jqgrid/themes/GPL-LICENSE.txt +278 -0
- data/public/stylesheets/rails-jqgrid/themes/MIT-LICENSE.txt +25 -0
- data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/smoothness/jquery-ui-1.8.4.custom.css +572 -0
- data/public/stylesheets/rails-jqgrid/themes/start/images/ui-bg_flat_55_999999_40x100.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/start/images/ui-bg_flat_75_aaaaaa_40x100.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/start/images/ui-bg_glass_45_0078ae_1x400.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/start/images/ui-bg_glass_55_f8da4e_1x400.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/start/images/ui-bg_glass_75_79c9ec_1x400.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/start/images/ui-bg_gloss-wave_45_e14f1c_500x100.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/start/images/ui-bg_gloss-wave_50_6eac2c_500x100.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/start/images/ui-bg_gloss-wave_75_2191c0_500x100.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/start/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/start/images/ui-icons_0078ae_256x240.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/start/images/ui-icons_056b93_256x240.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/start/images/ui-icons_d8e7f3_256x240.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/start/images/ui-icons_e0fdff_256x240.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/start/images/ui-icons_f5e175_256x240.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/start/images/ui-icons_f7a50d_256x240.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/start/images/ui-icons_fcd113_256x240.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/start/jquery-ui-1.8.4.custom.css +573 -0
- data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-bg_flat_30_cccccc_40x100.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-bg_flat_50_5c5c5c_40x100.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-bg_glass_20_555555_1x400.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-icons_222222_256x240.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-icons_4b8e0b_256x240.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-icons_a83300_256x240.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-icons_cccccc_256x240.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-icons_ffffff_256x240.png +0 -0
- data/public/stylesheets/rails-jqgrid/themes/ui-darkness/jquery-ui-1.8.4.custom.css +572 -0
- data/public/stylesheets/rails-jqgrid/themes/version.txt +1 -0
- data/public/stylesheets/rails-jqgrid/ui.jqgrid.css +2 -0
- data/rails_jq_grid.gemspec +200 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +8 -0
- metadata +240 -0
data/README.rdoc
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
= Rails JqGrid
|
|
2
|
+
|
|
3
|
+
This Rails 3 Enginge allows you to use jQGrid into your applications with REST support.
|
|
4
|
+
When used with rest sudgrids and details grids are treated as nestet resources. URL's
|
|
5
|
+
are constructect from mastergrid-url + selecedted id + detail/sub-grid-url.
|
|
6
|
+
|
|
7
|
+
It' is bundled with jqGrid 3.7.2 and some themes. To use your
|
|
8
|
+
custom themes put them under
|
|
9
|
+
|
|
10
|
+
RAILS_ROOT\public\stylesheets\rails-jqgrid\themes
|
|
11
|
+
|
|
12
|
+
== Usage
|
|
13
|
+
|
|
14
|
+
=== Controller
|
|
15
|
+
include RailsJqGrid::ActsAsJqGridAble
|
|
16
|
+
acts_as_jqgrid_able
|
|
17
|
+
order_by_cols :col_name1, :col_name2
|
|
18
|
+
|
|
19
|
+
def action
|
|
20
|
+
...
|
|
21
|
+
|
|
22
|
+
@records = MyModel.all(:order => order_by, :limit => records_per_page, :offset => current_offset)
|
|
23
|
+
|
|
24
|
+
respond_to do |format|
|
|
25
|
+
format.html { }
|
|
26
|
+
format.xml { }
|
|
27
|
+
format.json {
|
|
28
|
+
#for multiple pages
|
|
29
|
+
render :json => jqgrid_json(:total_records => @total_records,
|
|
30
|
+
:default_records_per_page => @default_records_per_page,
|
|
31
|
+
:data => @records)
|
|
32
|
+
#or for a single page
|
|
33
|
+
#render :json => jqgrid_json(:data => @records)
|
|
34
|
+
}
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
=== View
|
|
39
|
+
<head>
|
|
40
|
+
...
|
|
41
|
+
<%= jqgrid_stylesheets_tags(:theme => "start") %>
|
|
42
|
+
<%= jqgrid_js_tags %>
|
|
43
|
+
...
|
|
44
|
+
</head>
|
|
45
|
+
|
|
46
|
+
...
|
|
47
|
+
|
|
48
|
+
<%=jqgrid("Article", "article", url_for(:action => "index"), :restful => true) do |a|
|
|
49
|
+
|
|
50
|
+
a.autowidth true
|
|
51
|
+
a.width 300
|
|
52
|
+
a.height 500
|
|
53
|
+
a.shrink_to_fit true
|
|
54
|
+
a.row_num 10
|
|
55
|
+
a.row_list [10,20,50,100]
|
|
56
|
+
a.search true
|
|
57
|
+
a.gridview true
|
|
58
|
+
a.multiselect false
|
|
59
|
+
|
|
60
|
+
a.on_select_row raw "function(){alert('test');}"
|
|
61
|
+
|
|
62
|
+
a.column "ean" do |c|
|
|
63
|
+
c.label "EAN"
|
|
64
|
+
c.autowidth true
|
|
65
|
+
c.resizable true
|
|
66
|
+
c.editable true
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
a.column "article_number" do |c|
|
|
70
|
+
c.label "Article"
|
|
71
|
+
c.resizable true
|
|
72
|
+
c.editable true
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
a.jqgrid "Prices", "prices", url_for(:controller => :prices),
|
|
76
|
+
:url_append_ids => true,
|
|
77
|
+
:type => :sub_grid,
|
|
78
|
+
:restful => true do |p|
|
|
79
|
+
p.autowidth true
|
|
80
|
+
p.width 300
|
|
81
|
+
p.height 500
|
|
82
|
+
p.shrink_to_fit true
|
|
83
|
+
p.row_num 10
|
|
84
|
+
p.row_list [10,20,50,100]
|
|
85
|
+
p.search true
|
|
86
|
+
p.gridview true
|
|
87
|
+
p.multiselect false
|
|
88
|
+
|
|
89
|
+
p.on_select_row << "function(id,status){alert('test2');}"
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
p.column "price" do
|
|
93
|
+
c.autowidth true
|
|
94
|
+
c.resizable true
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
p.column "valid_from"
|
|
98
|
+
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
a.jqgrid "Prices Detail", "prices_detail",
|
|
102
|
+
url_for(:controller => :prices ,
|
|
103
|
+
:action => "index"),
|
|
104
|
+
:caption_append_ids => true,
|
|
105
|
+
:type => :detail_grid do |p|
|
|
106
|
+
p.autowidth true
|
|
107
|
+
p.width 300
|
|
108
|
+
p.height 500
|
|
109
|
+
p.shrink_to_fit true
|
|
110
|
+
p.row_num 10
|
|
111
|
+
p.row_list [10,20,50,100]
|
|
112
|
+
p.search true
|
|
113
|
+
p.gridview true
|
|
114
|
+
p.multiselect false
|
|
115
|
+
|
|
116
|
+
p.on_select_row << "function(id,status){alert('test2');}"
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
p.column "ean" do
|
|
120
|
+
c.label "EAN"
|
|
121
|
+
c.autowidth true
|
|
122
|
+
c.resizable true
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
p.column "article_number" do
|
|
126
|
+
c.label "Article"
|
|
127
|
+
c.resizable true
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
# some columns with the same options
|
|
132
|
+
p.columns "col1", "col2" , "col3", "col4" do |c|
|
|
133
|
+
c.autowidth true
|
|
134
|
+
c.resizable true
|
|
135
|
+
c.editable true
|
|
136
|
+
c.height "30px"
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
#alter options for one column
|
|
140
|
+
p.column "col1" do |c|
|
|
141
|
+
c.editable false
|
|
142
|
+
c.height "40px"
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
end %>
|
|
148
|
+
|
|
149
|
+
=== Model
|
|
150
|
+
|
|
151
|
+
class MyModel < ActiveRecord::Base
|
|
152
|
+
self.include_root_in_json = false
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
=== I18N
|
|
157
|
+
|
|
158
|
+
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:
|
|
160
|
+
|
|
161
|
+
-RAILS_ROOT
|
|
162
|
+
|-config
|
|
163
|
+
|-locales
|
|
164
|
+
| - en.yml
|
|
165
|
+
|
|
166
|
+
content for en.yml:
|
|
167
|
+
en:
|
|
168
|
+
attributes:
|
|
169
|
+
col1: "Label for Col1"
|
|
170
|
+
col2: "Label for Col2"
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
== Copyright
|
|
175
|
+
|
|
176
|
+
Copyright (c) 2010 Dieter Spaeth. See GPL-LICENSE for details.
|
data/Rakefile
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require "rake"
|
|
3
|
+
require 'rake/testtask'
|
|
4
|
+
require 'rake/rdoctask'
|
|
5
|
+
|
|
6
|
+
begin
|
|
7
|
+
require "jeweler"
|
|
8
|
+
Jeweler::Tasks.new do |gem|
|
|
9
|
+
gem.name = "rails_jq_grid"
|
|
10
|
+
gem.summary = "Add JqGrid to your Rails 3 app"
|
|
11
|
+
gem.email = "dieter.spaeth@gmx.de"
|
|
12
|
+
gem.authors = ["Dieter Spaeth"]
|
|
13
|
+
gem.homepage = "http://github.com/consu/rails-jqgrid"
|
|
14
|
+
gem.add_development_dependency "rspec", ">= 1.2.9"
|
|
15
|
+
gem.files = Dir["*", "{lib}/**/*", "{public}/**/*", "{spec}/**/*", "{app}/**/*"]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
Jeweler::GemcutterTasks.new
|
|
19
|
+
rescue LoadError
|
|
20
|
+
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
require 'spec/rake/spectask'
|
|
24
|
+
Spec::Rake::SpecTask.new(:spec) do |spec|
|
|
25
|
+
spec.libs << 'lib' << 'spec'
|
|
26
|
+
spec.spec_files = FileList['spec/**/*_spec.rb']
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
|
30
|
+
spec.libs << 'lib' << 'spec'
|
|
31
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
|
32
|
+
spec.rcov = true
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
task :spec => :check_dependencies
|
|
36
|
+
|
|
37
|
+
task :default => :spec
|
|
38
|
+
|
|
39
|
+
require 'rake/rdoctask'
|
|
40
|
+
Rake::RDocTask.new do |rdoc|
|
|
41
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
|
42
|
+
|
|
43
|
+
rdoc.rdoc_dir = 'rdoc'
|
|
44
|
+
rdoc.title = "ko #{version}"
|
|
45
|
+
rdoc.rdoc_files.include('README*')
|
|
46
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
47
|
+
end
|
data/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.0.2
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# To change this template, choose Tools | Templates
|
|
2
|
+
# and open the template in the editor.
|
|
3
|
+
|
|
4
|
+
module RailsJqGrid
|
|
5
|
+
module JqGridCssHelper
|
|
6
|
+
STYLESHEETS_BASE = "/stylesheets/rails-jqgrid"
|
|
7
|
+
JQUERY_UI_THEMES_BASE = STYLESHEETS_BASE + "/themes"
|
|
8
|
+
JQUERY_UI_VERSION = "1.8.4"
|
|
9
|
+
|
|
10
|
+
def jqgrid_stylesheets_tags(options={})
|
|
11
|
+
[jqgrid_ui_stylesheet_tag(options),
|
|
12
|
+
jquery_ui_stylesheet_tag(options)
|
|
13
|
+
].join("\n").html_safe
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def jqgrid_ui_stylesheet_tag(options={})
|
|
17
|
+
(stylesheet_link_tag STYLESHEETS_BASE + "/ui.jqgrid.css").html_safe
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def jquery_ui_stylesheet_tag(options={})
|
|
21
|
+
(stylesheet_link_tag JQUERY_UI_THEMES_BASE + "/#{jquery_theme(options)}" +"/jquery-ui-#{JQUERY_UI_VERSION}.custom.css").html_safe
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def jquery_theme(options={})
|
|
25
|
+
options[:theme] || "start"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# To change this template, choose Tools | Templates
|
|
2
|
+
# and open the template in the editor.
|
|
3
|
+
|
|
4
|
+
require 'rails_jq_grid/jq_grid'
|
|
5
|
+
|
|
6
|
+
module RailsJqGrid
|
|
7
|
+
module JqGridHelper
|
|
8
|
+
|
|
9
|
+
include JqGridJsHelper
|
|
10
|
+
include JqGridCssHelper
|
|
11
|
+
|
|
12
|
+
def jqgrid(title, dom_id, url_for_options, options={}, &option_block)
|
|
13
|
+
if url_for_options.is_a?(Hash)
|
|
14
|
+
url_for_options[:controller]||=controller.controller_name
|
|
15
|
+
end
|
|
16
|
+
::RailsJqGrid::JqGrid.new(title, dom_id, url_for_options, options, &option_block).to_html
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# To change this template, choose Tools | Templates
|
|
2
|
+
# and open the template in the editor.
|
|
3
|
+
|
|
4
|
+
module RailsJqGrid
|
|
5
|
+
module JqGridJsHelper
|
|
6
|
+
JS_BASE = "/javascripts/rails-jqgrid"
|
|
7
|
+
JQUERY_VERSION = "1.4.2"
|
|
8
|
+
|
|
9
|
+
def jqgrid_js_tags(options={})
|
|
10
|
+
[jquery_js_tag,
|
|
11
|
+
jqgrid_i18n_js_tag(options),
|
|
12
|
+
jqgrid_js_tag
|
|
13
|
+
].join("\n").html_safe
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def jquery_js_tag
|
|
17
|
+
(javascript_include_tag JS_BASE + "/jquery-#{JQUERY_VERSION}.min.js").html_safe
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def jqgrid_js_tag
|
|
21
|
+
(javascript_include_tag JS_BASE + "/jquery.jqGrid.min.js").html_safe
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def jqgrid_i18n_js_tag(options={})
|
|
25
|
+
options[:local] ||= I18n.locale rescue :en
|
|
26
|
+
(javascript_include_tag JS_BASE + "/i18n/grid.locale-#{options[:local]}.js").html_safe
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
# To change this template, choose Tools | Templates
|
|
2
|
+
# and open the template in the editor.
|
|
3
|
+
|
|
4
|
+
module RailsJqGrid
|
|
5
|
+
class JqGrid
|
|
6
|
+
extend ActiveModel::Translation
|
|
7
|
+
|
|
8
|
+
include ActionView::Helpers::JavaScriptHelper
|
|
9
|
+
include ActionView::Helpers::TagHelper
|
|
10
|
+
include Rails.application.routes.url_helpers
|
|
11
|
+
|
|
12
|
+
include JqGridMethodMissing
|
|
13
|
+
|
|
14
|
+
attr_accessor :title, :dom_id, :columns_data, :detail_grids, :sub_grid_data,
|
|
15
|
+
:proc_binding, :options
|
|
16
|
+
|
|
17
|
+
DEFAULT_OPTIONS = {:row_num => '10',
|
|
18
|
+
:row_list => [10,25,50,100],
|
|
19
|
+
:sortname => '',
|
|
20
|
+
:sortcolumn => '',
|
|
21
|
+
:sortorder => '',
|
|
22
|
+
:scroll => false,
|
|
23
|
+
:scrollrows => false,
|
|
24
|
+
:shrink_to_fit => true,
|
|
25
|
+
:height => 150,
|
|
26
|
+
:width => 150,
|
|
27
|
+
:gridview => false,
|
|
28
|
+
:error_handler => 'null',
|
|
29
|
+
:inline_edit_handler => 'null',
|
|
30
|
+
:inline_edit => false,
|
|
31
|
+
:add => true,
|
|
32
|
+
:delete => true,
|
|
33
|
+
:edit => true,
|
|
34
|
+
:refresh => true,
|
|
35
|
+
:search => true,
|
|
36
|
+
:editurl => '',
|
|
37
|
+
:autowidth => false,
|
|
38
|
+
:rownumbers => false,
|
|
39
|
+
:footerrow => false,
|
|
40
|
+
:user_data_on_footer => false,
|
|
41
|
+
:initial_empty => false,
|
|
42
|
+
:viewrecords => true,
|
|
43
|
+
:col_names => [],
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def initialize(title, dom_id, url_for_options, options={},&option_block)
|
|
48
|
+
self.title = JqGrid.human_attribute_name(title)
|
|
49
|
+
self.dom_id = dom_id
|
|
50
|
+
self.init_jq_grid_js_options DEFAULT_OPTIONS
|
|
51
|
+
self.columns_data = []
|
|
52
|
+
self.detail_grids = []
|
|
53
|
+
self.proc_binding = option_block.binding
|
|
54
|
+
self.options = options
|
|
55
|
+
|
|
56
|
+
#fancier syntax, but heavier to handle
|
|
57
|
+
#self.instance_eval(&option_block) if block_given?
|
|
58
|
+
|
|
59
|
+
self.url my_url_for(url_for_options)
|
|
60
|
+
|
|
61
|
+
if self.is_restful?
|
|
62
|
+
self.editurl my_url_for(url_for_options)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
option_block.call(self) if block_given?
|
|
66
|
+
|
|
67
|
+
detail_grids_connect_js_to_options
|
|
68
|
+
sub_grid_js_to_options
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def my_url_for(url_for_options = nil)
|
|
72
|
+
case url_for_options
|
|
73
|
+
when String
|
|
74
|
+
url_for_options
|
|
75
|
+
when nil, Hash
|
|
76
|
+
url_for_options ||= {:action => "blub"}
|
|
77
|
+
url_for_options[:only_path]=true
|
|
78
|
+
url_for(url_for_options)
|
|
79
|
+
else
|
|
80
|
+
polymorphic_url(url_for_options, :only_path => true)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def jqgrid(title, dom_id, url, options={} ,&option_block)
|
|
85
|
+
options[:type] ||= :detail_grid
|
|
86
|
+
grid = {:jqgrid => JqGrid.new(title, dom_id, url, options, &option_block), :options => options}
|
|
87
|
+
if options[:type] == :detail_grid
|
|
88
|
+
self.detail_grids << grid
|
|
89
|
+
else
|
|
90
|
+
self.sub_grid_data = grid
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def pager_id
|
|
95
|
+
"#{dom_id}pager"
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def columns(*fields,&block)
|
|
99
|
+
fields.each do |field|
|
|
100
|
+
self.column(field,&block)
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def column(field,&block)
|
|
105
|
+
find_or_create_column(field).set_column_options(&block)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def find_or_create_column(field)
|
|
109
|
+
col = self.columns_data.find{|col| col.field == field}
|
|
110
|
+
if col.nil?
|
|
111
|
+
col = JqGridColumn.new(field)
|
|
112
|
+
self.columns_data << col
|
|
113
|
+
end
|
|
114
|
+
col
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def to_html
|
|
118
|
+
parts =[]
|
|
119
|
+
parts << javascript_tag(jq_grid_function_js)
|
|
120
|
+
parts << "<table id='#{dom_id}'></table> <div id='#{pager_id}'></div> ".html_safe
|
|
121
|
+
parts << detail_grids_html
|
|
122
|
+
|
|
123
|
+
parts.join("\n").html_safe
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def jq_grid_function_js
|
|
127
|
+
js_str=<<-EO_JS
|
|
128
|
+
jQuery(document).ready(function(){
|
|
129
|
+
#{jq_grid_js}
|
|
130
|
+
#{nav_grid_js}
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
EO_JS
|
|
134
|
+
js_str.html_safe
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def jq_grid_js
|
|
138
|
+
<<-EO_JS
|
|
139
|
+
var jqgrid_#{dom_id} = jQuery("##{dom_id}").jqGrid({
|
|
140
|
+
caption: "#{self.title}",
|
|
141
|
+
datatype: '#{jq_grid_js_options[:initial_empty] == "true" ? "local" : "json"}',
|
|
142
|
+
pager: '##{pager_id}',
|
|
143
|
+
jsonReader: {
|
|
144
|
+
repeatitems: false, cell: "",
|
|
145
|
+
root: "data",
|
|
146
|
+
page: "currentpage",
|
|
147
|
+
total: "totalpages",
|
|
148
|
+
records: "totalrecords"
|
|
149
|
+
},
|
|
150
|
+
colModel: #{col_models},
|
|
151
|
+
colNames: #{col_names},
|
|
152
|
+
#{options_to_jqgrid_options}
|
|
153
|
+
});
|
|
154
|
+
EO_JS
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
def col_models
|
|
158
|
+
"[" +
|
|
159
|
+
self.columns_data.map {|col|
|
|
160
|
+
"{ " + col.options_to_jqgrid_options + "}\n"
|
|
161
|
+
}.join(",\n") +
|
|
162
|
+
"]"
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def col_names
|
|
166
|
+
"[" +
|
|
167
|
+
self.columns_data.map {|col|
|
|
168
|
+
col.name.to_json
|
|
169
|
+
}.join(",\n") +
|
|
170
|
+
"]"
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
def nav_grid_js
|
|
174
|
+
params=[nav_grid_parameters]
|
|
175
|
+
params.push(nav_grid_restful_extensions).flatten! if is_restful?
|
|
176
|
+
|
|
177
|
+
<<-EO_JS
|
|
178
|
+
jQuery("##{dom_id}").jqGrid('navGrid','##{pager_id}',#{params.join(",\n")} );
|
|
179
|
+
EO_JS
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def is_restful?
|
|
183
|
+
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
|
|
232
|
+
|
|
233
|
+
def detail_grids_html
|
|
234
|
+
self.detail_grids.map do |detail_grid|
|
|
235
|
+
detail_grid[:jqgrid].to_html
|
|
236
|
+
end.join("\n").html_safe
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
def detail_grids_connect_js_to_options
|
|
240
|
+
if self.detail_grids.count > 0
|
|
241
|
+
# it hast to be raw and not << because of execution order and key creation
|
|
242
|
+
on_select_row raw detail_grids_connect_js
|
|
243
|
+
end
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
def detail_grids_connect_js
|
|
247
|
+
parts = ["function(ids,status){"]
|
|
248
|
+
|
|
249
|
+
if self.jq_grid_js_options.has_key? :on_select_row
|
|
250
|
+
parts << "custom_function = #{self.jq_grid_js_options[:on_select_row].escaped_value};"
|
|
251
|
+
parts << "custom_function(ids,status);"
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
parts << self.detail_grids.map do |detail_grid|
|
|
255
|
+
detail_grid_connect_js(detail_grid[:jqgrid],detail_grid[:options])
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
parts << "}"
|
|
259
|
+
|
|
260
|
+
parts.flatten.join("\n").html_safe
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
def detail_grid_connect_js(detail_grid, options)
|
|
264
|
+
|
|
265
|
+
caption = "'#{detail_grid.title}'"
|
|
266
|
+
|
|
267
|
+
if options[:js_caption]
|
|
268
|
+
caption = options[:js_caption]
|
|
269
|
+
elsif options[:caption_append_ids]
|
|
270
|
+
caption = "'#{detail_grid.title}: '+ids"
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
detail_grid_url = detail_grid.get_jq_grid_js_options(:url).escaped_value
|
|
274
|
+
js_url = %Q("#{detail_grid_url}?&id="+ids)
|
|
275
|
+
|
|
276
|
+
if detail_grid.is_restful? && self.is_restful?
|
|
277
|
+
js_url = %Q(#{self.get_jq_grid_js_options(:url).escaped_value}+'/'+ids+#{detail_grid_url})
|
|
278
|
+
js_url ="#{js_url}, editurl:#{js_url}"
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
<<-EO_JS
|
|
282
|
+
jQuery("##{detail_grid.dom_id}").setGridParam({url:#{js_url},page:1})
|
|
283
|
+
.setCaption(#{caption})
|
|
284
|
+
.trigger('reloadGrid');
|
|
285
|
+
EO_JS
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
def sub_grid_js_to_options
|
|
289
|
+
unless self.sub_grid_data.nil?
|
|
290
|
+
grid = self.sub_grid_data[:jqgrid]
|
|
291
|
+
sub_grid true
|
|
292
|
+
# Grid-View and SubGrid doesn't work together http://www.trirand.com/jqgridwiki/doku.php?id=wiki:jq_grid_js_options
|
|
293
|
+
grid_view false
|
|
294
|
+
|
|
295
|
+
if self.sub_grid_data[:options] && self.sub_grid_data[:options][:url_append_ids] && ! (grid.is_restful? && self.is_restful?)
|
|
296
|
+
grid.url raw grid.get_jq_grid_js_options(:url).escaped_value + "+'&id='+row_id"
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
if grid.is_restful? && self.is_restful?
|
|
300
|
+
grid.url raw self.get_jq_grid_js_options(:url).escaped_value + "+'/'+row_id+" + grid.get_jq_grid_js_options(:url).escaped_value
|
|
301
|
+
grid.editurl raw grid.get_jq_grid_js_options(:url).escaped_value
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
sub_grid_row_expanded raw <<-EO_JS
|
|
305
|
+
function(subgrid_id, row_id) {
|
|
306
|
+
subgrid_table_id = subgrid_id+"_t";
|
|
307
|
+
jQuery("#"+subgrid_id).html("<table id='#{grid.dom_id}' class='scroll'></table><div id='#{grid.pager_id}'></div>");
|
|
308
|
+
#{grid.jq_grid_js}
|
|
309
|
+
}
|
|
310
|
+
EO_JS
|
|
311
|
+
end
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
end
|
|
315
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# To change this template, choose Tools | Templates
|
|
2
|
+
# and open the template in the editor.
|
|
3
|
+
|
|
4
|
+
module RailsJqGrid
|
|
5
|
+
class JqGridColumn
|
|
6
|
+
extend ActiveModel::Translation
|
|
7
|
+
|
|
8
|
+
include JqGridMethodMissing
|
|
9
|
+
|
|
10
|
+
attr_accessor :field
|
|
11
|
+
|
|
12
|
+
def initialize(field, &option_block)
|
|
13
|
+
self.field = field
|
|
14
|
+
self.init_jq_grid_js_options "name" => field, "index" => field
|
|
15
|
+
|
|
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
|
|
23
|
+
|
|
24
|
+
def set_column_options(&option_block)
|
|
25
|
+
option_block.call(self) if block_given?
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def name
|
|
29
|
+
self.jq_grid_js_options[:label]
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# To change this template, choose Tools | Templates
|
|
2
|
+
# and open the template in the editor.
|
|
3
|
+
|
|
4
|
+
module RailsJqGrid
|
|
5
|
+
module JqGridMethodMissing
|
|
6
|
+
attr_accessor :jq_grid_js_options
|
|
7
|
+
|
|
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}"
|
|
14
|
+
self.jq_grid_js_options ||={}
|
|
15
|
+
self.jq_grid_js_options[symbol] = JqGridOptionOrMethod.new(symbol, args[0])
|
|
16
|
+
#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
|
+
|
|
26
|
+
def raw(*args)
|
|
27
|
+
{:type => :raw, :value => args[0]}
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def get_jq_grid_js_options(symbol)
|
|
31
|
+
self.jq_grid_js_options[symbol]
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def init_jq_grid_js_options(new_options)
|
|
35
|
+
self.jq_grid_js_options ||={}
|
|
36
|
+
new_options.each do |key, value|
|
|
37
|
+
self.jq_grid_js_options[key] = JqGridOptionOrMethod.new(key, value)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def options_to_jqgrid_options
|
|
42
|
+
jqgrid_options = []
|
|
43
|
+
self.jq_grid_js_options.each_value { |option|
|
|
44
|
+
jqgrid_options << "#{option.escaped_name}: #{option.escaped_value}"
|
|
45
|
+
}
|
|
46
|
+
jqgrid_options.sort.join(",\n ")
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
50
|
+
end
|