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.
Files changed (160) hide show
  1. data/COPYRIGHT.txt +17 -0
  2. data/GPL-LICENSE +675 -0
  3. data/README.rdoc +176 -0
  4. data/Rakefile +47 -0
  5. data/VERSION +1 -0
  6. data/app/helpers/rails_jq_grid/jq_grid_css_helper.rb +29 -0
  7. data/app/helpers/rails_jq_grid/jq_grid_helper.rb +21 -0
  8. data/app/helpers/rails_jq_grid/jq_grid_js_helper.rb +30 -0
  9. data/app/models/rails_jq_grid/jq_grid.rb +315 -0
  10. data/app/models/rails_jq_grid/jq_grid_column.rb +33 -0
  11. data/app/models/rails_jq_grid/jq_grid_method_missing.rb +50 -0
  12. data/app/models/rails_jq_grid/jq_grid_option_or_method.rb +46 -0
  13. data/lib/rails_jq_grid/acts_as_jq_grid_able.rb +76 -0
  14. data/lib/rails_jq_grid/acts_as_jq_grid_data_source.rb +34 -0
  15. data/lib/rails_jq_grid/engine.rb +23 -0
  16. data/lib/rails_jq_grid.rb +7 -0
  17. data/lib/tasks/rails_jq_grid.rake +1 -0
  18. data/public/javascripts/rails-jqgrid/Changes.txt +1160 -0
  19. data/public/javascripts/rails-jqgrid/i18n/grid.locale-bg.js +1 -0
  20. data/public/javascripts/rails-jqgrid/i18n/grid.locale-bg1251.js +1 -0
  21. data/public/javascripts/rails-jqgrid/i18n/grid.locale-cat.js +1 -0
  22. data/public/javascripts/rails-jqgrid/i18n/grid.locale-cn.js +1 -0
  23. data/public/javascripts/rails-jqgrid/i18n/grid.locale-cs.js +1 -0
  24. data/public/javascripts/rails-jqgrid/i18n/grid.locale-de.js +1 -0
  25. data/public/javascripts/rails-jqgrid/i18n/grid.locale-dk.js +1 -0
  26. data/public/javascripts/rails-jqgrid/i18n/grid.locale-el.js +1 -0
  27. data/public/javascripts/rails-jqgrid/i18n/grid.locale-en.js +1 -0
  28. data/public/javascripts/rails-jqgrid/i18n/grid.locale-es.js +1 -0
  29. data/public/javascripts/rails-jqgrid/i18n/grid.locale-fa.js +1 -0
  30. data/public/javascripts/rails-jqgrid/i18n/grid.locale-fi.js +1 -0
  31. data/public/javascripts/rails-jqgrid/i18n/grid.locale-fr.js +1 -0
  32. data/public/javascripts/rails-jqgrid/i18n/grid.locale-he.js +1 -0
  33. data/public/javascripts/rails-jqgrid/i18n/grid.locale-hu.js +1 -0
  34. data/public/javascripts/rails-jqgrid/i18n/grid.locale-is.js +1 -0
  35. data/public/javascripts/rails-jqgrid/i18n/grid.locale-it.js +1 -0
  36. data/public/javascripts/rails-jqgrid/i18n/grid.locale-ja.js +1 -0
  37. data/public/javascripts/rails-jqgrid/i18n/grid.locale-nl.js +1 -0
  38. data/public/javascripts/rails-jqgrid/i18n/grid.locale-no.js +1 -0
  39. data/public/javascripts/rails-jqgrid/i18n/grid.locale-pl.js +1 -0
  40. data/public/javascripts/rails-jqgrid/i18n/grid.locale-pt-br.js +1 -0
  41. data/public/javascripts/rails-jqgrid/i18n/grid.locale-pt.js +1 -0
  42. data/public/javascripts/rails-jqgrid/i18n/grid.locale-ro.js +1 -0
  43. data/public/javascripts/rails-jqgrid/i18n/grid.locale-ru.js +1 -0
  44. data/public/javascripts/rails-jqgrid/i18n/grid.locale-sk.js +1 -0
  45. data/public/javascripts/rails-jqgrid/i18n/grid.locale-sv.js +1 -0
  46. data/public/javascripts/rails-jqgrid/i18n/grid.locale-tr.js +1 -0
  47. data/public/javascripts/rails-jqgrid/i18n/grid.locale-ua.js +1 -0
  48. data/public/javascripts/rails-jqgrid/install.txt +43 -0
  49. data/public/javascripts/rails-jqgrid/jquery-1.4.2.min.js +154 -0
  50. data/public/javascripts/rails-jqgrid/jquery-ui-1.8.4.custom.min.js +763 -0
  51. data/public/javascripts/rails-jqgrid/jquery.jqGrid.min.js +445 -0
  52. data/public/javascripts/rails-jqgrid/src/JsonXml.js +330 -0
  53. data/public/javascripts/rails-jqgrid/src/css/ellipsis-xbl.xml +13 -0
  54. data/public/javascripts/rails-jqgrid/src/css/jquery.searchFilter.css +7 -0
  55. data/public/javascripts/rails-jqgrid/src/css/ui.jqgrid.css +129 -0
  56. data/public/javascripts/rails-jqgrid/src/css/ui.multiselect.css +30 -0
  57. data/public/javascripts/rails-jqgrid/src/grid.base.js +3003 -0
  58. data/public/javascripts/rails-jqgrid/src/grid.celledit.js +486 -0
  59. data/public/javascripts/rails-jqgrid/src/grid.common.js +636 -0
  60. data/public/javascripts/rails-jqgrid/src/grid.custom.js +818 -0
  61. data/public/javascripts/rails-jqgrid/src/grid.formedit.js +1872 -0
  62. data/public/javascripts/rails-jqgrid/src/grid.import.js +201 -0
  63. data/public/javascripts/rails-jqgrid/src/grid.inlinedit.js +250 -0
  64. data/public/javascripts/rails-jqgrid/src/grid.jqueryui.js +503 -0
  65. data/public/javascripts/rails-jqgrid/src/grid.loader.js +47 -0
  66. data/public/javascripts/rails-jqgrid/src/grid.postext.js +64 -0
  67. data/public/javascripts/rails-jqgrid/src/grid.setcolumns.js +126 -0
  68. data/public/javascripts/rails-jqgrid/src/grid.subgrid.js +260 -0
  69. data/public/javascripts/rails-jqgrid/src/grid.tbltogrid.js +106 -0
  70. data/public/javascripts/rails-jqgrid/src/grid.treegrid.js +483 -0
  71. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-bg.js +132 -0
  72. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-bg1251.js +132 -0
  73. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-cat.js +128 -0
  74. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-cn.js +132 -0
  75. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-cs.js +128 -0
  76. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-de.js +128 -0
  77. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-dk.js +128 -0
  78. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-el.js +126 -0
  79. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-en.js +128 -0
  80. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-es.js +128 -0
  81. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-fa.js +125 -0
  82. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-fi.js +130 -0
  83. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-fr.js +126 -0
  84. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-he.js +127 -0
  85. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-hu.js +129 -0
  86. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-is.js +126 -0
  87. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-it.js +1 -0
  88. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-ja.js +155 -0
  89. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-nl.js +149 -0
  90. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-no.js +1 -0
  91. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-pl.js +127 -0
  92. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-pt-br.js +127 -0
  93. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-pt.js +125 -0
  94. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-ro.js +139 -0
  95. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-ru.js +127 -0
  96. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-sk.js +127 -0
  97. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-sv.js +127 -0
  98. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-tr.js +126 -0
  99. data/public/javascripts/rails-jqgrid/src/i18n/grid.locale-ua.js +127 -0
  100. data/public/javascripts/rails-jqgrid/src/jqDnR.js +68 -0
  101. data/public/javascripts/rails-jqgrid/src/jqModal.js +69 -0
  102. data/public/javascripts/rails-jqgrid/src/jquery.fmatter.js +542 -0
  103. data/public/javascripts/rails-jqgrid/src/jquery.searchFilter.js +716 -0
  104. data/public/javascripts/rails-jqgrid/src/ui.multiselect.js +314 -0
  105. data/public/stylesheets/rails-jqgrid/ellipsis-xbl.xml +13 -0
  106. data/public/stylesheets/rails-jqgrid/themes/AUTHORS.txt +30 -0
  107. data/public/stylesheets/rails-jqgrid/themes/GPL-LICENSE.txt +278 -0
  108. data/public/stylesheets/rails-jqgrid/themes/MIT-LICENSE.txt +25 -0
  109. data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  110. data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  111. data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  112. data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  113. data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  114. data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  115. data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  116. data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  117. data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-icons_222222_256x240.png +0 -0
  118. data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  119. data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-icons_454545_256x240.png +0 -0
  120. data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-icons_888888_256x240.png +0 -0
  121. data/public/stylesheets/rails-jqgrid/themes/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  122. data/public/stylesheets/rails-jqgrid/themes/smoothness/jquery-ui-1.8.4.custom.css +572 -0
  123. data/public/stylesheets/rails-jqgrid/themes/start/images/ui-bg_flat_55_999999_40x100.png +0 -0
  124. data/public/stylesheets/rails-jqgrid/themes/start/images/ui-bg_flat_75_aaaaaa_40x100.png +0 -0
  125. data/public/stylesheets/rails-jqgrid/themes/start/images/ui-bg_glass_45_0078ae_1x400.png +0 -0
  126. data/public/stylesheets/rails-jqgrid/themes/start/images/ui-bg_glass_55_f8da4e_1x400.png +0 -0
  127. data/public/stylesheets/rails-jqgrid/themes/start/images/ui-bg_glass_75_79c9ec_1x400.png +0 -0
  128. data/public/stylesheets/rails-jqgrid/themes/start/images/ui-bg_gloss-wave_45_e14f1c_500x100.png +0 -0
  129. data/public/stylesheets/rails-jqgrid/themes/start/images/ui-bg_gloss-wave_50_6eac2c_500x100.png +0 -0
  130. data/public/stylesheets/rails-jqgrid/themes/start/images/ui-bg_gloss-wave_75_2191c0_500x100.png +0 -0
  131. data/public/stylesheets/rails-jqgrid/themes/start/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
  132. data/public/stylesheets/rails-jqgrid/themes/start/images/ui-icons_0078ae_256x240.png +0 -0
  133. data/public/stylesheets/rails-jqgrid/themes/start/images/ui-icons_056b93_256x240.png +0 -0
  134. data/public/stylesheets/rails-jqgrid/themes/start/images/ui-icons_d8e7f3_256x240.png +0 -0
  135. data/public/stylesheets/rails-jqgrid/themes/start/images/ui-icons_e0fdff_256x240.png +0 -0
  136. data/public/stylesheets/rails-jqgrid/themes/start/images/ui-icons_f5e175_256x240.png +0 -0
  137. data/public/stylesheets/rails-jqgrid/themes/start/images/ui-icons_f7a50d_256x240.png +0 -0
  138. data/public/stylesheets/rails-jqgrid/themes/start/images/ui-icons_fcd113_256x240.png +0 -0
  139. data/public/stylesheets/rails-jqgrid/themes/start/jquery-ui-1.8.4.custom.css +573 -0
  140. data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-bg_flat_30_cccccc_40x100.png +0 -0
  141. data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-bg_flat_50_5c5c5c_40x100.png +0 -0
  142. data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-bg_glass_20_555555_1x400.png +0 -0
  143. data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png +0 -0
  144. data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png +0 -0
  145. data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png +0 -0
  146. data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png +0 -0
  147. data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png +0 -0
  148. data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png +0 -0
  149. data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-icons_222222_256x240.png +0 -0
  150. data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-icons_4b8e0b_256x240.png +0 -0
  151. data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-icons_a83300_256x240.png +0 -0
  152. data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-icons_cccccc_256x240.png +0 -0
  153. data/public/stylesheets/rails-jqgrid/themes/ui-darkness/images/ui-icons_ffffff_256x240.png +0 -0
  154. data/public/stylesheets/rails-jqgrid/themes/ui-darkness/jquery-ui-1.8.4.custom.css +572 -0
  155. data/public/stylesheets/rails-jqgrid/themes/version.txt +1 -0
  156. data/public/stylesheets/rails-jqgrid/ui.jqgrid.css +2 -0
  157. data/rails_jq_grid.gemspec +200 -0
  158. data/spec/spec.opts +1 -0
  159. data/spec/spec_helper.rb +8 -0
  160. metadata +240 -0
@@ -0,0 +1,503 @@
1
+ ;(function($){
2
+ /*
3
+ **
4
+ * jqGrid addons using jQuery UI
5
+ * Author: Mark Williams
6
+ * Dual licensed under the MIT and GPL licenses:
7
+ * http://www.opensource.org/licenses/mit-license.php
8
+ * http://www.gnu.org/licenses/gpl-2.0.html
9
+ * depends on jQuery UI
10
+ **/
11
+ if ($.browser.msie && $.browser.version==8) {
12
+ $.expr[":"].hidden = function(elem) {
13
+ return elem.offsetWidth === 0 || elem.offsetHeight === 0 ||
14
+ elem.style.display == "none";
15
+ };
16
+ }
17
+ // requiere load multiselect before grid
18
+ $.jgrid._multiselect = false;
19
+ if($.ui) {
20
+ if ($.ui.multiselect ) {
21
+ if($.ui.multiselect.prototype._setSelected) {
22
+ var setSelected = $.ui.multiselect.prototype._setSelected;
23
+ $.ui.multiselect.prototype._setSelected = function(item,selected) {
24
+ var ret = setSelected.call(this,item,selected);
25
+ if (selected && this.selectedList) {
26
+ var elt = this.element;
27
+ this.selectedList.find('li').each(function() {
28
+ if ($(this).data('optionLink')) {
29
+ $(this).data('optionLink').remove().appendTo(elt);
30
+ }
31
+ });
32
+ }
33
+ return ret;
34
+ };
35
+ }
36
+ if($.ui.multiselect.prototype.destroy) {
37
+ $.ui.multiselect.prototype.destroy = function() {
38
+ this.element.show();
39
+ this.container.remove();
40
+ if ($.Widget === undefined) {
41
+ $.widget.prototype.destroy.apply(this, arguments);
42
+ } else {
43
+ $.Widget.prototype.destroy.apply(this, arguments);
44
+ }
45
+ };
46
+ }
47
+ $.jgrid._multiselect = true;
48
+ }
49
+ }
50
+
51
+ $.jgrid.extend({
52
+ sortableColumns : function (tblrow)
53
+ {
54
+ return this.each(function (){
55
+ var ts = this;
56
+ function start() {ts.p.disableClick = true;}
57
+ var sortable_opts = {
58
+ "tolerance" : "pointer",
59
+ "axis" : "x",
60
+ "scrollSensitivity": "1",
61
+ "items": '>th:not(:has(#jqgh_cb,#jqgh_rn,#jqgh_subgrid),:hidden)',
62
+ "placeholder": {
63
+ element: function(item) {
64
+ var el = $(document.createElement(item[0].nodeName))
65
+ .addClass(item[0].className+" ui-sortable-placeholder ui-state-highlight")
66
+ .removeClass("ui-sortable-helper")[0];
67
+ return el;
68
+ },
69
+ update: function(self, p) {
70
+ p.height(self.currentItem.innerHeight() - parseInt(self.currentItem.css('paddingTop')||0, 10) - parseInt(self.currentItem.css('paddingBottom')||0, 10));
71
+ p.width(self.currentItem.innerWidth() - parseInt(self.currentItem.css('paddingLeft')||0, 10) - parseInt(self.currentItem.css('paddingRight')||0, 10));
72
+ }
73
+ },
74
+ "update": function(event, ui) {
75
+ var p = $(ui.item).parent();
76
+ var th = $(">th", p);
77
+ var colModel = ts.p.colModel;
78
+ var cmMap = {};
79
+ $.each(colModel, function(i) { cmMap[this.name]=i; });
80
+ var permutation = [];
81
+ th.each(function(i) {
82
+ var id = $(">div", this).get(0).id.replace(/^jqgh_/, "");
83
+ if (id in cmMap) {
84
+ permutation.push(cmMap[id]);
85
+ }
86
+ });
87
+
88
+ $(ts).jqGrid("remapColumns",permutation, true, true);
89
+ if ($.isFunction(ts.p.sortable.update)) {
90
+ ts.p.sortable.update(permutation);
91
+ }
92
+ setTimeout(function(){ts.p.disableClick=false;}, 50);
93
+ }
94
+ };
95
+ if (ts.p.sortable.options) {
96
+ $.extend(sortable_opts, ts.p.sortable.options);
97
+ } else if ($.isFunction(ts.p.sortable)) {
98
+ ts.p.sortable = { "update" : ts.p.sortable };
99
+ }
100
+ if (sortable_opts.start) {
101
+ var s = sortable_opts.start;
102
+ sortable_opts.start = function(e,ui) {
103
+ start();
104
+ s.call(this,e,ui);
105
+ };
106
+ } else {
107
+ sortable_opts.start = start;
108
+ }
109
+ if (ts.p.sortable.exclude) {
110
+ sortable_opts.items += ":not("+ts.p.sortable.exclude+")";
111
+ }
112
+ tblrow.sortable(sortable_opts).data("sortable").floating = true;
113
+ });
114
+ },
115
+ columnChooser : function(opts) {
116
+ var self = this;
117
+ if($("#colchooser_"+self[0].p.id).length ) { return; }
118
+ var selector = $('<div id="colchooser_'+self[0].p.id+'" style="position:relative;overflow:hidden"><div><select multiple="multiple"></select></div></div>');
119
+ var select = $('select', selector);
120
+
121
+ opts = $.extend({
122
+ "width" : 420,
123
+ "height" : 240,
124
+ "classname" : null,
125
+ "done" : function(perm) { if (perm) { self.jqGrid("remapColumns", perm, true); } },
126
+ /* msel is either the name of a ui widget class that
127
+ extends a multiselect, or a function that supports
128
+ creating a multiselect object (with no argument,
129
+ or when passed an object), and destroying it (when
130
+ passed the string "destroy"). */
131
+ "msel" : "multiselect",
132
+ /* "msel_opts" : {}, */
133
+
134
+ /* dlog is either the name of a ui widget class that
135
+ behaves in a dialog-like way, or a function, that
136
+ supports creating a dialog (when passed dlog_opts)
137
+ or destroying a dialog (when passed the string
138
+ "destroy")
139
+ */
140
+ "dlog" : "dialog",
141
+
142
+ /* dlog_opts is either an option object to be passed
143
+ to "dlog", or (more likely) a function that creates
144
+ the options object.
145
+ The default produces a suitable options object for
146
+ ui.dialog */
147
+ "dlog_opts" : function(opts) {
148
+ var buttons = {};
149
+ buttons[opts.bSubmit] = function() {
150
+ opts.apply_perm();
151
+ opts.cleanup(false);
152
+ };
153
+ buttons[opts.bCancel] = function() {
154
+ opts.cleanup(true);
155
+ };
156
+ return {
157
+ "buttons": buttons,
158
+ "close": function() {
159
+ opts.cleanup(true);
160
+ },
161
+ "modal" : false,
162
+ "resizable": false,
163
+ "width": opts.width+20
164
+ };
165
+ },
166
+ /* Function to get the permutation array, and pass it to the
167
+ "done" function */
168
+ "apply_perm" : function() {
169
+ $('option',select).each(function(i) {
170
+ if (this.selected) {
171
+ self.jqGrid("showCol", colModel[this.value].name);
172
+ } else {
173
+ self.jqGrid("hideCol", colModel[this.value].name);
174
+ }
175
+ });
176
+
177
+ var perm = [];
178
+ //fixedCols.slice(0);
179
+ $('option[selected]',select).each(function() { perm.push(parseInt(this.value,10)); });
180
+ $.each(perm, function() { delete colMap[colModel[parseInt(this,10)].name]; });
181
+ $.each(colMap, function() {
182
+ var ti = parseInt(this,10);
183
+ perm = insert(perm,ti,ti);
184
+ });
185
+ if (opts.done) {
186
+ opts.done.call(self, perm);
187
+ }
188
+ },
189
+ /* Function to cleanup the dialog, and select. Also calls the
190
+ done function with no permutation (to indicate that the
191
+ columnChooser was aborted */
192
+ "cleanup" : function(calldone) {
193
+ call(opts.dlog, selector, 'destroy');
194
+ call(opts.msel, select, 'destroy');
195
+ selector.remove();
196
+ if (calldone && opts.done) {
197
+ opts.done.call(self);
198
+ }
199
+ },
200
+ "msel_opts" : {}
201
+ }, $.jgrid.col, opts || {});
202
+ if($.ui) {
203
+ if ($.ui.multiselect ) {
204
+ if(opts.msel == "multiselect") {
205
+ if(!$.jgrid._multiselect) {
206
+ // should be in language file
207
+ alert("Multiselect plugin loaded after jqGrid. Please load the plugin before the jqGrid!");
208
+ return;
209
+ }
210
+ opts.msel_opts = $.extend($.ui.multiselect.defaults,opts.msel_opts);
211
+ }
212
+ }
213
+ }
214
+ if (opts.caption) {
215
+ selector.attr("title", opts.caption);
216
+ }
217
+ if (opts.classname) {
218
+ selector.addClass(opts.classname);
219
+ select.addClass(opts.classname);
220
+ }
221
+ if (opts.width) {
222
+ $(">div",selector).css({"width": opts.width,"margin":"0 auto"});
223
+ select.css("width", opts.width);
224
+ }
225
+ if (opts.height) {
226
+ $(">div",selector).css("height", opts.height);
227
+ select.css("height", opts.height - 10);
228
+ }
229
+ var colModel = self.jqGrid("getGridParam", "colModel");
230
+ var colNames = self.jqGrid("getGridParam", "colNames");
231
+ var colMap = {}, fixedCols = [];
232
+
233
+ select.empty();
234
+ $.each(colModel, function(i) {
235
+ colMap[this.name] = i;
236
+ if (this.hidedlg) {
237
+ if (!this.hidden) {
238
+ fixedCols.push(i);
239
+ }
240
+ return;
241
+ }
242
+
243
+ select.append("<option value='"+i+"' "+
244
+ (this.hidden?"":"selected='selected'")+">"+colNames[i]+"</option>");
245
+ });
246
+ function insert(perm,i,v) {
247
+ if(i>=0){
248
+ var a = perm.slice();
249
+ var b = a.splice(i,Math.max(perm.length-i,i));
250
+ if(i>perm.length) { i = perm.length; }
251
+ a[i] = v;
252
+ return a.concat(b);
253
+ }
254
+ }
255
+ function call(fn, obj) {
256
+ if (!fn) { return; }
257
+ if (typeof fn == 'string') {
258
+ if ($.fn[fn]) {
259
+ $.fn[fn].apply(obj, $.makeArray(arguments).slice(2));
260
+ }
261
+ } else if ($.isFunction(fn)) {
262
+ fn.apply(obj, $.makeArray(arguments).slice(2));
263
+ }
264
+ }
265
+
266
+ var dopts = $.isFunction(opts.dlog_opts) ? opts.dlog_opts.call(self, opts) : opts.dlog_opts;
267
+ call(opts.dlog, selector, dopts);
268
+ var mopts = $.isFunction(opts.msel_opts) ? opts.msel_opts.call(self, opts) : opts.msel_opts;
269
+ call(opts.msel, select, mopts);
270
+ },
271
+ sortableRows : function (opts) {
272
+ // Can accept all sortable options and events
273
+ return this.each(function(){
274
+ var $t = this;
275
+ if(!$t.grid) { return; }
276
+ // Currently we disable a treeGrid sortable
277
+ if($t.p.treeGrid) { return; }
278
+ if($.fn.sortable) {
279
+ opts = $.extend({
280
+ "cursor":"move",
281
+ "axis" : "y",
282
+ "items": ".jqgrow"
283
+ },
284
+ opts || {});
285
+ if(opts.start && $.isFunction(opts.start)) {
286
+ opts._start_ = opts.start;
287
+ delete opts.start;
288
+ } else {opts._start_=false;}
289
+ if(opts.update && $.isFunction(opts.update)) {
290
+ opts._update_ = opts.update;
291
+ delete opts.update;
292
+ } else {opts._update_ = false;}
293
+ opts.start = function(ev,ui) {
294
+ $(ui.item).css("border-width","0px");
295
+ $("td",ui.item).each(function(i){
296
+ this.style.width = $t.grid.cols[i].style.width;
297
+ });
298
+ if($t.p.subGrid) {
299
+ var subgid = $(ui.item).attr("id");
300
+ try {
301
+ $($t).jqGrid('collapseSubGridRow',subgid);
302
+ } catch (e) {}
303
+ }
304
+ if(opts._start_) {
305
+ opts._start_.apply(this,[ev,ui]);
306
+ }
307
+ };
308
+ opts.update = function (ev,ui) {
309
+ $(ui.item).css("border-width","");
310
+ $t.updateColumns();
311
+ if($t.p.rownumbers === true) {
312
+ $("td.jqgrid-rownum",$t.rows).each(function(i){
313
+ $(this).html(i+1);
314
+ });
315
+ }
316
+ if(opts._update_) {
317
+ opts._update_.apply(this,[ev,ui]);
318
+ }
319
+ };
320
+ $("tbody:first",$t).sortable(opts);
321
+ $("tbody:first",$t).disableSelection();
322
+ }
323
+ });
324
+ },
325
+ gridDnD : function(opts) {
326
+ return this.each(function(){
327
+ var $t = this;
328
+ if(!$t.grid) { return; }
329
+ // Currently we disable a treeGrid drag and drop
330
+ if($t.p.treeGrid) { return; }
331
+ if(!$.fn.draggable || !$.fn.droppable) { return; }
332
+ function updateDnD ()
333
+ {
334
+ var datadnd = $.data($t,"dnd");
335
+ $("tr.jqgrow:not(.ui-draggable)",$t).draggable($.isFunction(datadnd.drag) ? datadnd.drag.call($($t),datadnd) : datadnd.drag);
336
+ }
337
+ var appender = "<table id='jqgrid_dnd' class='ui-jqgrid-dnd'></table>";
338
+ if($("#jqgrid_dnd").html() === null) {
339
+ $('body').append(appender);
340
+ }
341
+
342
+ if(typeof opts == 'string' && opts == 'updateDnD' && $t.p.jqgdnd===true) {
343
+ updateDnD();
344
+ return;
345
+ }
346
+ opts = $.extend({
347
+ "drag" : function (opts) {
348
+ return $.extend({
349
+ start : function (ev, ui) {
350
+ // if we are in subgrid mode try to collapse the node
351
+ if($t.p.subGrid) {
352
+ var subgid = $(ui.helper).attr("id");
353
+ try {
354
+ $($t).jqGrid('collapseSubGridRow',subgid);
355
+ } catch (e) {}
356
+ }
357
+ // hack
358
+ // drag and drop does not insert tr in table, when the table has no rows
359
+ // we try to insert new empty row on the target(s)
360
+ for (var i=0;i<$.data($t,"dnd").connectWith.length;i++){
361
+ if($($.data($t,"dnd").connectWith[i]).jqGrid('getGridParam','reccount') == "0" ){
362
+ $($.data($t,"dnd").connectWith[i]).jqGrid('addRowData','jqg_empty_row',{});
363
+ }
364
+ }
365
+ ui.helper.addClass("ui-state-highlight");
366
+ $("td",ui.helper).each(function(i) {
367
+ this.style.width = $t.grid.headers[i].width+"px";
368
+ });
369
+ if(opts.onstart && $.isFunction(opts.onstart) ) { opts.onstart.call($($t),ev,ui); }
370
+ },
371
+ stop :function(ev,ui) {
372
+ if(ui.helper.dropped) {
373
+ var ids = $(ui.helper).attr("id");
374
+ $($t).jqGrid('delRowData',ids );
375
+ }
376
+ // if we have a empty row inserted from start event try to delete it
377
+ for (var i=0;i<$.data($t,"dnd").connectWith.length;i++){
378
+ $($.data($t,"dnd").connectWith[i]).jqGrid('delRowData','jqg_empty_row');
379
+ }
380
+ if(opts.onstop && $.isFunction(opts.onstop) ) { opts.onstop.call($($t),ev,ui); }
381
+ }
382
+ },opts.drag_opts || {});
383
+ },
384
+ "drop" : function (opts) {
385
+ return $.extend({
386
+ accept: function(d) {
387
+ var tid = $(d).closest("table.ui-jqgrid-btable");
388
+ if($.data(tid[0],"dnd") !== undefined) {
389
+ var cn = $.data(tid[0],"dnd").connectWith;
390
+ return $.inArray('#'+this.id,cn) != -1 ? true : false;
391
+ }
392
+ return d;
393
+ },
394
+ drop: function(ev, ui) {
395
+ var accept = $(ui.draggable).attr("id");
396
+ var getdata = $('#'+$t.id).jqGrid('getRowData',accept);
397
+ if(!opts.dropbyname) {
398
+ var j =0, tmpdata = {}, dropname;
399
+ var dropmodel = $("#"+this.id).jqGrid('getGridParam','colModel');
400
+ try {
401
+ for (var key in getdata) {
402
+ if(getdata.hasOwnProperty(key) && dropmodel[j]) {
403
+ dropname = dropmodel[j].name;
404
+ tmpdata[dropname] = getdata[key];
405
+ }
406
+ j++;
407
+ }
408
+ getdata = tmpdata;
409
+ } catch (e) {}
410
+ }
411
+ ui.helper.dropped = true;
412
+ if(opts.beforedrop && $.isFunction(opts.beforedrop) ) {
413
+ //parameters to this callback - event, element, data to be inserted, sender, reciever
414
+ // should return object which will be inserted into the reciever
415
+ var datatoinsert = opts.beforedrop.call(this,ev,ui,getdata,$('#'+$t.id),$(this));
416
+ if (typeof datatoinsert != "undefined" && datatoinsert !== null && typeof datatoinsert == "object") { getdata = datatoinsert; }
417
+ }
418
+ if(ui.helper.dropped) {
419
+ var grid;
420
+ if(opts.autoid) {
421
+ if($.isFunction(opts.autoid)) {
422
+ grid = opts.autoid.call(this,getdata);
423
+ } else {
424
+ grid = Math.ceil(Math.random()*1000);
425
+ grid = opts.autoidprefix+grid;
426
+ }
427
+ }
428
+ // NULL is interpreted as undefined while null as object
429
+ $("#"+this.id).jqGrid('addRowData',grid,getdata,opts.droppos);
430
+ }
431
+ if(opts.ondrop && $.isFunction(opts.ondrop) ) { opts.ondrop.call(this,ev,ui, getdata); }
432
+ }}, opts.drop_opts || {});
433
+ },
434
+ "onstart" : null,
435
+ "onstop" : null,
436
+ "beforedrop": null,
437
+ "ondrop" : null,
438
+ "drop_opts" : {
439
+ "activeClass": "ui-state-active",
440
+ "hoverClass": "ui-state-hover"
441
+ },
442
+ "drag_opts" : {
443
+ "revert": "invalid",
444
+ "helper": "clone",
445
+ "cursor": "move",
446
+ "appendTo" : "#jqgrid_dnd",
447
+ "zIndex": 5000
448
+ },
449
+ "dropbyname" : false,
450
+ "droppos" : "first",
451
+ "autoid" : true,
452
+ "autoidprefix" : "dnd_"
453
+ }, opts || {});
454
+
455
+ if(!opts.connectWith) { return; }
456
+ opts.connectWith = opts.connectWith.split(",");
457
+ opts.connectWith = $.map(opts.connectWith,function(n){return $.trim(n);});
458
+ $.data($t,"dnd",opts);
459
+
460
+ if($t.p.reccount != "0" && !$t.p.jqgdnd) {
461
+ updateDnD();
462
+ }
463
+ $t.p.jqgdnd = true;
464
+ for (var i=0;i<opts.connectWith.length;i++){
465
+ var cn =opts.connectWith[i];
466
+ $(cn).droppable($.isFunction(opts.drop) ? opts.drop.call($($t),opts) : opts.drop);
467
+ }
468
+ });
469
+ },
470
+ gridResize : function(opts) {
471
+ return this.each(function(){
472
+ var $t = this;
473
+ if(!$t.grid || !$.fn.resizable) { return; }
474
+ opts = $.extend({}, opts || {});
475
+ if(opts.alsoResize ) {
476
+ opts._alsoResize_ = opts.alsoResize;
477
+ delete opts.alsoResize;
478
+ } else {
479
+ opts._alsoResize_ = false;
480
+ }
481
+ if(opts.stop && $.isFunction(opts.stop)) {
482
+ opts._stop_ = opts.stop;
483
+ delete opts.stop;
484
+ } else {
485
+ opts._stop_ = false;
486
+ }
487
+ opts.stop = function (ev, ui) {
488
+ $($t).jqGrid('setGridParam',{height:$("#gview_"+$t.p.id+" .ui-jqgrid-bdiv").height()});
489
+ $($t).jqGrid('setGridWidth',ui.size.width,opts.shrinkToFit);
490
+ if(opts._stop_) { opts._stop_.call($t,ev,ui); }
491
+ };
492
+ if(opts._alsoResize_) {
493
+ var optstest = "{\'#gview_"+$t.p.id+" .ui-jqgrid-bdiv\':true,'" +opts._alsoResize_+"':true}";
494
+ opts.alsoResize = eval('('+optstest+')'); // the only way that I found to do this
495
+ } else {
496
+ opts.alsoResize = $(".ui-jqgrid-bdiv","#gview_"+$t.p.id);
497
+ }
498
+ delete opts._alsoResize_;
499
+ $("#gbox_"+$t.p.id).resizable(opts);
500
+ });
501
+ }
502
+ });
503
+ })(jQuery);
@@ -0,0 +1,47 @@
1
+ // This file should be used if you want to debug
2
+ function jqGridInclude()
3
+ {
4
+ var pathtojsfiles = "js/"; // need to be ajusted
5
+ // set include to false if you do not want some modules to be included
6
+ var modules = [
7
+ { include: true, incfile:'i18n/grid.locale-en.js'}, // jqGrid translation
8
+ { include: true, incfile:'grid.base.js'}, // jqGrid base
9
+ { include: true, incfile:'grid.common.js'}, // jqGrid common for editing
10
+ { include: true, incfile:'grid.formedit.js'}, // jqGrid Form editing
11
+ { include: true, incfile:'grid.inlinedit.js'}, // jqGrid inline editing
12
+ { include: true, incfile:'grid.celledit.js'}, // jqGrid cell editing
13
+ { include: true, incfile:'grid.subgrid.js'}, //jqGrid subgrid
14
+ { include: true, incfile:'grid.treegrid.js'}, //jqGrid treegrid
15
+ { include: true, incfile:'grid.custom.js'}, //jqGrid custom
16
+ { include: true, incfile:'grid.postext.js'}, //jqGrid postext
17
+ { include: true, incfile:'grid.tbltogrid.js'}, //jqGrid table to grid
18
+ { include: true, incfile:'grid.setcolumns.js'}, //jqGrid setcolumns
19
+ { include: true, incfile:'grid.import.js'}, //jqGrid import
20
+ { include: true, incfile:'jquery.fmatter.js'}, //jqGrid formater
21
+ { include: true, incfile:'JsonXml.js'}, //xmljson utils
22
+ { include: true, incfile:'jquery.searchFilter.js'} // search Plugin
23
+ ];
24
+ var filename;
25
+ for(var i=0;i<modules.length; i++)
26
+ {
27
+ if(modules[i].include === true) {
28
+
29
+ filename = pathtojsfiles+modules[i].incfile;
30
+ if(jQuery.browser.safari) {
31
+ jQuery.ajax({url:filename,dataType:'script', async:false, cache: true});
32
+ } else {
33
+ IncludeJavaScript(filename);
34
+ }
35
+ }
36
+ }
37
+ function IncludeJavaScript(jsFile)
38
+ {
39
+ var oHead = document.getElementsByTagName('head')[0];
40
+ var oScript = document.createElement('script');
41
+ oScript.type = 'text/javascript';
42
+ oScript.charset = 'utf-8';
43
+ oScript.src = jsFile;
44
+ oHead.appendChild(oScript);
45
+ };
46
+ };
47
+ jqGridInclude();
@@ -0,0 +1,64 @@
1
+ ;(function($){
2
+ /**
3
+ * jqGrid extension
4
+ * Paul Tiseo ptiseo@wasteconsultants.com
5
+ *
6
+ * Dual licensed under the MIT and GPL licenses:
7
+ * http://www.opensource.org/licenses/mit-license.php
8
+ * http://www.gnu.org/licenses/gpl-2.0.html
9
+ **/
10
+ $.jgrid.extend({
11
+ getPostData : function(){
12
+ var $t = this[0];
13
+ if(!$t.grid) { return; }
14
+ return $t.p.postData;
15
+ },
16
+ setPostData : function( newdata ) {
17
+ var $t = this[0];
18
+ if(!$t.grid) { return; }
19
+ // check if newdata is correct type
20
+ if ( typeof(newdata) === 'object' ) {
21
+ $t.p.postData = newdata;
22
+ }
23
+ else {
24
+ alert("Error: cannot add a non-object postData value. postData unchanged.");
25
+ }
26
+ },
27
+ appendPostData : function( newdata ) {
28
+ var $t = this[0];
29
+ if(!$t.grid) { return; }
30
+ // check if newdata is correct type
31
+ if ( typeof(newdata) === 'object' ) {
32
+ $.extend($t.p.postData, newdata);
33
+ }
34
+ else {
35
+ alert("Error: cannot append a non-object postData value. postData unchanged.");
36
+ }
37
+ },
38
+ setPostDataItem : function( key, val ) {
39
+ var $t = this[0];
40
+ if(!$t.grid) { return; }
41
+ $t.p.postData[key] = val;
42
+ },
43
+ getPostDataItem : function( key ) {
44
+ var $t = this[0];
45
+ if(!$t.grid) { return; }
46
+ return $t.p.postData[key];
47
+ },
48
+ removePostDataItem : function( key ) {
49
+ var $t = this[0];
50
+ if(!$t.grid) { return; }
51
+ delete $t.p.postData[key];
52
+ },
53
+ getUserData : function(){
54
+ var $t = this[0];
55
+ if(!$t.grid) { return; }
56
+ return $t.p.userData;
57
+ },
58
+ getUserDataItem : function( key ) {
59
+ var $t = this[0];
60
+ if(!$t.grid) { return; }
61
+ return $t.p.userData[key];
62
+ }
63
+ });
64
+ })(jQuery);