slickgrid-requirejs-rails 1.0.0

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 (189) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.md +5 -0
  3. data/Rakefile +40 -0
  4. data/app/assets/stylesheets/slickgrid-requirejs-rails/application.css +13 -0
  5. data/app/controllers/slickgrid-requirejs-rails/application_controller.rb +4 -0
  6. data/app/helpers/slickgrid-requirejs-rails/application_helper.rb +4 -0
  7. data/app/views/layouts/slickgrid-requirejs-rails/application.html.erb +14 -0
  8. data/config/routes.rb +2 -0
  9. data/lib/slickgrid-requirejs-rails.rb +4 -0
  10. data/lib/slickgrid-requirejs-rails/engine.rb +5 -0
  11. data/lib/slickgrid-requirejs-rails/version.rb +3 -0
  12. data/lib/tasks/slickgrid-requirejs-rails_tasks.rake +35 -0
  13. data/test/dummy/README.rdoc +261 -0
  14. data/test/dummy/Rakefile +7 -0
  15. data/test/dummy/app/assets/javascripts/adapters/jquery-adapter.js +4 -0
  16. data/test/dummy/app/assets/javascripts/application.js.coffee +33 -0
  17. data/test/dummy/app/assets/javascripts/jquery.spreadsheet.js.coffee +105 -0
  18. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  19. data/test/dummy/app/assets/stylesheets/examples.css +4 -0
  20. data/test/dummy/app/controllers/application_controller.rb +3 -0
  21. data/test/dummy/app/controllers/examples_controller.rb +4 -0
  22. data/test/dummy/app/helpers/application_helper.rb +2 -0
  23. data/test/dummy/app/helpers/examples_helper.rb +2 -0
  24. data/test/dummy/app/views/examples/simple.html.erb +7 -0
  25. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  26. data/test/dummy/config.ru +4 -0
  27. data/test/dummy/config/application.rb +60 -0
  28. data/test/dummy/config/boot.rb +10 -0
  29. data/test/dummy/config/database.yml +25 -0
  30. data/test/dummy/config/environment.rb +5 -0
  31. data/test/dummy/config/environments/development.rb +37 -0
  32. data/test/dummy/config/environments/production.rb +67 -0
  33. data/test/dummy/config/environments/test.rb +37 -0
  34. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  35. data/test/dummy/config/initializers/better_errors.rb +1 -0
  36. data/test/dummy/config/initializers/inflections.rb +15 -0
  37. data/test/dummy/config/initializers/mime_types.rb +5 -0
  38. data/test/dummy/config/initializers/secret_token.rb +7 -0
  39. data/test/dummy/config/initializers/session_store.rb +8 -0
  40. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  41. data/test/dummy/config/locales/en.yml +5 -0
  42. data/test/dummy/config/requirejs.yml +13 -0
  43. data/test/dummy/config/routes.rb +8 -0
  44. data/test/dummy/db/development.sqlite3 +0 -0
  45. data/test/dummy/log/development.log +2689 -0
  46. data/test/dummy/public/404.html +26 -0
  47. data/test/dummy/public/422.html +26 -0
  48. data/test/dummy/public/500.html +25 -0
  49. data/test/dummy/public/favicon.ico +0 -0
  50. data/test/dummy/script/rails +6 -0
  51. data/test/dummy/test/functional/examples_controller_test.rb +9 -0
  52. data/test/dummy/test/unit/helpers/examples_helper_test.rb +4 -0
  53. data/test/dummy/tmp/cache/assets/C27/240/sprockets%2Fc8d5e87e720ed4622105328524983048 +0 -0
  54. data/test/dummy/tmp/cache/assets/C42/A50/sprockets%2Fd83155902707b71eb877b3e0208205a0 +0 -0
  55. data/test/dummy/tmp/cache/assets/C80/150/sprockets%2F0d3881005b0646df783d5c24683d34f5 +0 -0
  56. data/test/dummy/tmp/cache/assets/C86/850/sprockets%2F75355848fa7b7065acb91b2634b29085 +0 -0
  57. data/test/dummy/tmp/cache/assets/C94/2C0/sprockets%2Fb5279968d5df8680a33776e0b74a8216 +0 -0
  58. data/test/dummy/tmp/cache/assets/CA9/390/sprockets%2F1891532332d1ff2d2ec0c4884168be24 +0 -0
  59. data/test/dummy/tmp/cache/assets/CB0/3D0/sprockets%2F378c2bc8804c6452508a5905c47b38ca +0 -0
  60. data/test/dummy/tmp/cache/assets/CB4/7D0/sprockets%2F1dc73f77b8d81bbc4a23579054295723 +0 -0
  61. data/test/dummy/tmp/cache/assets/CB7/EB0/sprockets%2F4de19cf2920983cc7502b38a537849a3 +0 -0
  62. data/test/dummy/tmp/cache/assets/CBA/210/sprockets%2F9cb316b6777b84fc332524911d7e645e +0 -0
  63. data/test/dummy/tmp/cache/assets/CBD/8E0/sprockets%2F5b5f989386cc9495a08127dbc42b3615 +0 -0
  64. data/test/dummy/tmp/cache/assets/CCA/480/sprockets%2F6d10d00d7c82276924f3e22e6210fa0b +0 -0
  65. data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  66. data/test/dummy/tmp/cache/assets/CDC/260/sprockets%2F6b925351de71c9bd9c021310669dfc70 +0 -0
  67. data/test/dummy/tmp/cache/assets/CDE/090/sprockets%2F15056f2ede4e042d8737f4801fa6b157 +0 -0
  68. data/test/dummy/tmp/cache/assets/CE4/AC0/sprockets%2Fe1db88f51455f23258896cb316e52bc1 +0 -0
  69. data/test/dummy/tmp/cache/assets/CF0/B10/sprockets%2Fb50252ad18b893dc145ef2896e38d689 +0 -0
  70. data/test/dummy/tmp/cache/assets/CF1/750/sprockets%2F8c683caf79c53642dd4e12a89c657355 +0 -0
  71. data/test/dummy/tmp/cache/assets/CF4/130/sprockets%2F2e2ec908b79eb4084c57c7c9632899a2 +0 -0
  72. data/test/dummy/tmp/cache/assets/D01/E90/sprockets%2Ffd358252a8aa0b738f61a75ea81b0134 +0 -0
  73. data/test/dummy/tmp/cache/assets/D09/F30/sprockets%2F330e6425d10d2cb797c3f45ca374b84e +0 -0
  74. data/test/dummy/tmp/cache/assets/D0B/C60/sprockets%2F24182be4c99c8f971c1596aa452a2c0a +0 -0
  75. data/test/dummy/tmp/cache/assets/D1F/5D0/sprockets%2F9dba5447e453628c0bfa9137f85df278 +0 -0
  76. data/test/dummy/tmp/cache/assets/D29/260/sprockets%2F5a18f14fa7a839360315acb05b1e3bf0 +0 -0
  77. data/test/dummy/tmp/cache/assets/D32/230/sprockets%2Fb34e03561a646fac533ce7d4b560c2b8 +0 -0
  78. data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  79. data/test/dummy/tmp/cache/assets/D3F/200/sprockets%2F8acb8521e88321b224d6bbf338d398cc +0 -0
  80. data/test/dummy/tmp/cache/assets/D3F/980/sprockets%2F1e2991c760ec4319a1fe5b94bc2ef633 +0 -0
  81. data/test/dummy/tmp/cache/assets/D48/090/sprockets%2F6d95fa4274b968de1d414e21cf46ca85 +0 -0
  82. data/test/dummy/tmp/cache/assets/D4B/4D0/sprockets%2F6205d4779aae40ce1a9a086c46978fef +0 -0
  83. data/test/dummy/tmp/cache/assets/D4E/D00/sprockets%2F1a6846f0a837ae2524e2f9ec89e6ef43 +0 -0
  84. data/test/dummy/tmp/cache/assets/D54/730/sprockets%2F1202c3cd8b0271cc02327e88b0bfad5e +0 -0
  85. data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  86. data/test/dummy/tmp/cache/assets/D5D/FF0/sprockets%2F9e1b9c655d94b7725c984f7ce6b8d6b3 +0 -0
  87. data/test/dummy/tmp/cache/assets/D64/0D0/sprockets%2Fbf47d6bc8fc84f8d8764c1f5955f1786 +0 -0
  88. data/test/dummy/tmp/cache/assets/D68/6C0/sprockets%2Fab07dab58b519282aeaf3ea945f46513 +0 -0
  89. data/test/dummy/tmp/cache/assets/D6A/EF0/sprockets%2F2eb65cc490ad96cc38604918b0caeb90 +0 -0
  90. data/test/dummy/tmp/cache/assets/D71/9A0/sprockets%2F8fe2ebb722d62d1fdd63068c57a6408d +0 -0
  91. data/test/dummy/tmp/cache/assets/D77/210/sprockets%2F6586fb2ab2cc992e642e53e4cc3e2e85 +0 -0
  92. data/test/dummy/tmp/cache/assets/D84/460/sprockets%2Fed41cc36973e3e16cce4f876be7297b8 +0 -0
  93. data/test/dummy/tmp/cache/assets/D86/600/sprockets%2Ff9be8df0f5835948b646a94b47cd23cf +0 -0
  94. data/test/dummy/tmp/cache/assets/D95/530/sprockets%2F0cbcab75dec40d0e637629a484beb653 +0 -0
  95. data/test/dummy/tmp/cache/assets/D98/070/sprockets%2F4c95e212d3de047f6ac4f2fe09c40de2 +0 -0
  96. data/test/dummy/tmp/cache/assets/D98/270/sprockets%2F0e7c025e3de60b80a6c5e5fcc7db6832 +0 -0
  97. data/test/dummy/tmp/cache/assets/D9C/520/sprockets%2Ffc5383ee26303f5906ad273a3fe5dcea +0 -0
  98. data/test/dummy/tmp/cache/assets/D9F/9B0/sprockets%2Ff4b8b3465acc5f71633cf0af5858c4ac +0 -0
  99. data/test/dummy/tmp/cache/assets/DA1/EB0/sprockets%2F2d2f2f5ed3c476dea3c3a3d9e2980a85 +0 -0
  100. data/test/dummy/tmp/cache/assets/DA2/890/sprockets%2F1fd7028cdd4ff7c24e4a630c1f38af88 +0 -0
  101. data/test/dummy/tmp/cache/assets/DA3/080/sprockets%2Ffb77a66783db0b5812e3fdbabe4608f6 +0 -0
  102. data/test/dummy/tmp/cache/assets/DB2/E50/sprockets%2Ff337be9ae1863f27a87c882feae9ee21 +0 -0
  103. data/test/dummy/tmp/cache/assets/DC1/E70/sprockets%2F827c6100c3adc3c91ddfe84da51fbd15 +0 -0
  104. data/test/dummy/tmp/cache/assets/DCA/380/sprockets%2Fc0ccdcba1aa3b504045ebb1b2400b9d0 +0 -0
  105. data/test/dummy/tmp/cache/assets/DCA/EA0/sprockets%2F139ab8cdba6b44b58ae3647dbeea8145 +0 -0
  106. data/test/dummy/tmp/cache/assets/DEF/8E0/sprockets%2F3b4c400d4a5c7db0cd8d02b7e3cb79df +0 -0
  107. data/test/dummy/tmp/cache/assets/E0C/530/sprockets%2F0ce78cd1a399cdb66ca6cd2f93e93f8b +0 -0
  108. data/test/dummy/tmp/cache/assets/E11/4E0/sprockets%2F86e145a39f85cceeaffdff91ebb61449 +0 -0
  109. data/test/dummy/tmp/cache/assets/E15/B80/sprockets%2F68eff298c6dad0b39ddf0d61ccd9896d +0 -0
  110. data/test/dummy/tmp/cache/assets/E22/130/sprockets%2Fbeaa50ffc31b2c6a5625ce1a85efc38e +0 -0
  111. data/test/dummy/tmp/cache/assets/E2D/B60/sprockets%2F5aa2b493bf9c5b69eafecd96aa0af066 +0 -0
  112. data/test/dummy/tmp/cache/assets/E38/8F0/sprockets%2F1cb65daaffa8b6d886108e4eaf6d9bb9 +0 -0
  113. data/test/dummy/tmp/cache/assets/E66/810/sprockets%2F5de7ae60bfff07ae5fd98d19d9b1a4da +0 -0
  114. data/test/dummy/tmp/cache/sass/a27500b667404a158ab7c09449b801b001e64ed8/all.css.scssc +0 -0
  115. data/test/dummy/tmp/cache/sass/a27500b667404a158ab7c09449b801b001e64ed8/default-theme.css.scssc +0 -0
  116. data/test/dummy/tmp/cache/sass/a27500b667404a158ab7c09449b801b001e64ed8/editors.css.scssc +0 -0
  117. data/test/dummy/tmp/cache/sass/a27500b667404a158ab7c09449b801b001e64ed8/grid.css.scssc +0 -0
  118. data/test/integration/navigation_test.rb +10 -0
  119. data/test/slickgrid-requirejs-rails_test.rb +7 -0
  120. data/test/test_helper.rb +15 -0
  121. data/vendor/assets/images/slick/actions.gif +0 -0
  122. data/vendor/assets/images/slick/ajax-loader-small.gif +0 -0
  123. data/vendor/assets/images/slick/arrow_redo.png +0 -0
  124. data/vendor/assets/images/slick/arrow_right_peppermint.png +0 -0
  125. data/vendor/assets/images/slick/arrow_right_spearmint.png +0 -0
  126. data/vendor/assets/images/slick/arrow_undo.png +0 -0
  127. data/vendor/assets/images/slick/bullet_blue.png +0 -0
  128. data/vendor/assets/images/slick/bullet_star.png +0 -0
  129. data/vendor/assets/images/slick/bullet_toggle_minus.png +0 -0
  130. data/vendor/assets/images/slick/bullet_toggle_plus.png +0 -0
  131. data/vendor/assets/images/slick/calendar.gif +0 -0
  132. data/vendor/assets/images/slick/collapse.gif +0 -0
  133. data/vendor/assets/images/slick/comment_yellow.gif +0 -0
  134. data/vendor/assets/images/slick/down.gif +0 -0
  135. data/vendor/assets/images/slick/drag-handle.png +0 -0
  136. data/vendor/assets/images/slick/editor-helper-bg.gif +0 -0
  137. data/vendor/assets/images/slick/expand.gif +0 -0
  138. data/vendor/assets/images/slick/header-bg.gif +0 -0
  139. data/vendor/assets/images/slick/header-columns-bg.gif +0 -0
  140. data/vendor/assets/images/slick/header-columns-over-bg.gif +0 -0
  141. data/vendor/assets/images/slick/help.png +0 -0
  142. data/vendor/assets/images/slick/info.gif +0 -0
  143. data/vendor/assets/images/slick/listview.gif +0 -0
  144. data/vendor/assets/images/slick/pencil.gif +0 -0
  145. data/vendor/assets/images/slick/row-over-bg.gif +0 -0
  146. data/vendor/assets/images/slick/sort-asc.gif +0 -0
  147. data/vendor/assets/images/slick/sort-asc.png +0 -0
  148. data/vendor/assets/images/slick/sort-desc.gif +0 -0
  149. data/vendor/assets/images/slick/sort-desc.png +0 -0
  150. data/vendor/assets/images/slick/stripes.png +0 -0
  151. data/vendor/assets/images/slick/tag_red.png +0 -0
  152. data/vendor/assets/images/slick/tick.png +0 -0
  153. data/vendor/assets/images/slick/user_identity.gif +0 -0
  154. data/vendor/assets/images/slick/user_identity_plus.gif +0 -0
  155. data/vendor/assets/javascripts/jquery.event/drag.js +407 -0
  156. data/vendor/assets/javascripts/jquery.event/drop.js +303 -0
  157. data/vendor/assets/javascripts/slick/controls/slick.columnpicker.js +157 -0
  158. data/vendor/assets/javascripts/slick/controls/slick.pager.js +158 -0
  159. data/vendor/assets/javascripts/slick/plugins/slick.autotooltips.js +88 -0
  160. data/vendor/assets/javascripts/slick/plugins/slick.cellcopymanager.js +93 -0
  161. data/vendor/assets/javascripts/slick/plugins/slick.cellrangedecorator.js +69 -0
  162. data/vendor/assets/javascripts/slick/plugins/slick.cellrangeselector.js +118 -0
  163. data/vendor/assets/javascripts/slick/plugins/slick.cellselectionmodel.js +160 -0
  164. data/vendor/assets/javascripts/slick/plugins/slick.checkboxselectcolumn.js +158 -0
  165. data/vendor/assets/javascripts/slick/plugins/slick.headerbuttons.js +181 -0
  166. data/vendor/assets/javascripts/slick/plugins/slick.headermenu.js +278 -0
  167. data/vendor/assets/javascripts/slick/plugins/slick.rowmovemanager.js +144 -0
  168. data/vendor/assets/javascripts/slick/plugins/slick.rowselectionmodel.js +193 -0
  169. data/vendor/assets/javascripts/slick/slick.core.js +468 -0
  170. data/vendor/assets/javascripts/slick/slick.dataview.aggregators.js +121 -0
  171. data/vendor/assets/javascripts/slick/slick.dataview.js +1061 -0
  172. data/vendor/assets/javascripts/slick/slick.editors.js +517 -0
  173. data/vendor/assets/javascripts/slick/slick.formatters.js +65 -0
  174. data/vendor/assets/javascripts/slick/slick.grid.js +3317 -0
  175. data/vendor/assets/javascripts/slick/slick.groupitemmetadataprovider.js +149 -0
  176. data/vendor/assets/javascripts/slick/slick.remotemodel.js +185 -0
  177. data/vendor/assets/stylesheets/slick/all.css.scss +3 -0
  178. data/vendor/assets/stylesheets/slick/controls/columnpicker.css.scss +30 -0
  179. data/vendor/assets/stylesheets/slick/controls/pager.css.scss +41 -0
  180. data/vendor/assets/stylesheets/slick/controls/slick.columnpicker.css +31 -0
  181. data/vendor/assets/stylesheets/slick/controls/slick.pager.css +41 -0
  182. data/vendor/assets/stylesheets/slick/default-theme.css.scss +104 -0
  183. data/vendor/assets/stylesheets/slick/editors.css.scss +100 -0
  184. data/vendor/assets/stylesheets/slick/grid.css.scss +174 -0
  185. data/vendor/assets/stylesheets/slick/plugins/slick.headerbuttons.css +39 -0
  186. data/vendor/assets/stylesheets/slick/plugins/slick.headermenu.css +59 -0
  187. data/vendor/assets/stylesheets/slick/remotemodel.css.scss +20 -0
  188. data/vendor/assets/stylesheets/slick/slick.grid.css +157 -0
  189. metadata +524 -0
@@ -0,0 +1,158 @@
1
+ // Universal module definition
2
+ (function (root, factory) {
3
+ if (typeof define === 'function' && define.amd) {
4
+ // AMD. Register as an anonymous module.
5
+ define(['jquery', '../slick.core'], factory);
6
+ } else {
7
+ // Browser globals
8
+ root.Slick.Controls = root.Slick.Controls || {};
9
+ root.Slick.Controls.Pager = factory(root.jQuery, root.Slick);
10
+ }
11
+ }(this, function ($, Slick) {
12
+
13
+ function SlickGridPager(dataView, grid, $container) {
14
+ var $status;
15
+
16
+ function init() {
17
+ dataView.onPagingInfoChanged.subscribe(function (e, pagingInfo) {
18
+ updatePager(pagingInfo);
19
+ });
20
+
21
+ constructPagerUI();
22
+ updatePager(dataView.getPagingInfo());
23
+ }
24
+
25
+ function getNavState() {
26
+ var cannotLeaveEditMode = !Slick.GlobalEditorLock.commitCurrentEdit();
27
+ var pagingInfo = dataView.getPagingInfo();
28
+ var lastPage = pagingInfo.totalPages - 1;
29
+
30
+ return {
31
+ canGotoFirst: !cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum > 0,
32
+ canGotoLast: !cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum != lastPage,
33
+ canGotoPrev: !cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum > 0,
34
+ canGotoNext: !cannotLeaveEditMode && pagingInfo.pageSize != 0 && pagingInfo.pageNum < lastPage,
35
+ pagingInfo: pagingInfo
36
+ }
37
+ }
38
+
39
+ function setPageSize(n) {
40
+ dataView.setRefreshHints({
41
+ isFilterUnchanged: true
42
+ });
43
+ dataView.setPagingOptions({pageSize: n});
44
+ }
45
+
46
+ function gotoFirst() {
47
+ if (getNavState().canGotoFirst) {
48
+ dataView.setPagingOptions({pageNum: 0});
49
+ }
50
+ }
51
+
52
+ function gotoLast() {
53
+ var state = getNavState();
54
+ if (state.canGotoLast) {
55
+ dataView.setPagingOptions({pageNum: state.pagingInfo.totalPages - 1});
56
+ }
57
+ }
58
+
59
+ function gotoPrev() {
60
+ var state = getNavState();
61
+ if (state.canGotoPrev) {
62
+ dataView.setPagingOptions({pageNum: state.pagingInfo.pageNum - 1});
63
+ }
64
+ }
65
+
66
+ function gotoNext() {
67
+ var state = getNavState();
68
+ if (state.canGotoNext) {
69
+ dataView.setPagingOptions({pageNum: state.pagingInfo.pageNum + 1});
70
+ }
71
+ }
72
+
73
+ function constructPagerUI() {
74
+ $container.empty();
75
+
76
+ var $nav = $("<span class='slick-pager-nav' />").appendTo($container);
77
+ var $settings = $("<span class='slick-pager-settings' />").appendTo($container);
78
+ $status = $("<span class='slick-pager-status' />").appendTo($container);
79
+
80
+ $settings
81
+ .append("<span class='slick-pager-settings-expanded' style='display:none'>Show: <a data=0>All</a><a data='-1'>Auto</a><a data=25>25</a><a data=50>50</a><a data=100>100</a></span>");
82
+
83
+ $settings.find("a[data]").click(function (e) {
84
+ var pagesize = $(e.target).attr("data");
85
+ if (pagesize != undefined) {
86
+ if (pagesize == -1) {
87
+ var vp = grid.getViewport();
88
+ setPageSize(vp.bottom - vp.top);
89
+ } else {
90
+ setPageSize(parseInt(pagesize));
91
+ }
92
+ }
93
+ });
94
+
95
+ var icon_prefix = "<span class='ui-state-default ui-corner-all ui-icon-container'><span class='ui-icon ";
96
+ var icon_suffix = "' /></span>";
97
+
98
+ $(icon_prefix + "ui-icon-lightbulb" + icon_suffix)
99
+ .click(function () {
100
+ $(".slick-pager-settings-expanded").toggle()
101
+ })
102
+ .appendTo($settings);
103
+
104
+ $(icon_prefix + "ui-icon-seek-first" + icon_suffix)
105
+ .click(gotoFirst)
106
+ .appendTo($nav);
107
+
108
+ $(icon_prefix + "ui-icon-seek-prev" + icon_suffix)
109
+ .click(gotoPrev)
110
+ .appendTo($nav);
111
+
112
+ $(icon_prefix + "ui-icon-seek-next" + icon_suffix)
113
+ .click(gotoNext)
114
+ .appendTo($nav);
115
+
116
+ $(icon_prefix + "ui-icon-seek-end" + icon_suffix)
117
+ .click(gotoLast)
118
+ .appendTo($nav);
119
+
120
+ $container.find(".ui-icon-container")
121
+ .hover(function () {
122
+ $(this).toggleClass("ui-state-hover");
123
+ });
124
+
125
+ $container.children().wrapAll("<div class='slick-pager' />");
126
+ }
127
+
128
+
129
+ function updatePager(pagingInfo) {
130
+ var state = getNavState();
131
+
132
+ $container.find(".slick-pager-nav span").removeClass("ui-state-disabled");
133
+ if (!state.canGotoFirst) {
134
+ $container.find(".ui-icon-seek-first").addClass("ui-state-disabled");
135
+ }
136
+ if (!state.canGotoLast) {
137
+ $container.find(".ui-icon-seek-end").addClass("ui-state-disabled");
138
+ }
139
+ if (!state.canGotoNext) {
140
+ $container.find(".ui-icon-seek-next").addClass("ui-state-disabled");
141
+ }
142
+ if (!state.canGotoPrev) {
143
+ $container.find(".ui-icon-seek-prev").addClass("ui-state-disabled");
144
+ }
145
+
146
+ if (pagingInfo.pageSize == 0) {
147
+ $status.text("Showing all " + pagingInfo.totalRows + " rows");
148
+ } else {
149
+ $status.text("Showing page " + (pagingInfo.pageNum + 1) + " of " + pagingInfo.totalPages);
150
+ }
151
+ }
152
+
153
+ init();
154
+ }
155
+
156
+ return SlickGridPager;
157
+
158
+ }));
@@ -0,0 +1,88 @@
1
+ // Universal module definition
2
+ (function (root, factory) {
3
+ if (typeof define === 'function' && define.amd) {
4
+ // AMD. Register as an anonymous module.
5
+ define(['jquery'], factory);
6
+ } else {
7
+ // Browser globals
8
+ root.Slick.AutoTooltips = factory(root.jQuery);
9
+ }
10
+ }(this, function ($) {
11
+
12
+ /**
13
+ * AutoTooltips plugin to show/hide tooltips when columns are too narrow to fit content.
14
+ * @constructor
15
+ * @param {boolean} [options.enableForCells=true] - Enable tooltip for grid cells
16
+ * @param {boolean} [options.enableForHeaderCells=false] - Enable tooltip for header cells
17
+ * @param {number} [options.maxToolTipLength=null] - The maximum length for a tooltip
18
+ */
19
+ function AutoTooltips(options) {
20
+ var _grid;
21
+ var _self = this;
22
+ var _defaults = {
23
+ enableForCells: true,
24
+ enableForHeaderCells: false,
25
+ maxToolTipLength: null
26
+ };
27
+
28
+ /**
29
+ * Initialize plugin.
30
+ */
31
+ function init(grid) {
32
+ options = $.extend(true, {}, _defaults, options);
33
+ _grid = grid;
34
+ if (options.enableForCells) _grid.onMouseEnter.subscribe(handleMouseEnter);
35
+ if (options.enableForHeaderCells) _grid.onHeaderMouseEnter.subscribe(handleHeaderMouseEnter);
36
+ }
37
+
38
+ /**
39
+ * Destroy plugin.
40
+ */
41
+ function destroy() {
42
+ if (options.enableForCells) _grid.onMouseEnter.unsubscribe(handleMouseEnter);
43
+ if (options.enableForHeaderCells) _grid.onHeaderMouseEnter.unsubscribe(handleHeaderMouseEnter);
44
+ }
45
+
46
+ /**
47
+ * Handle mouse entering grid cell to add/remove tooltip.
48
+ * @param {jQuery.Event} e - The event
49
+ */
50
+ function handleMouseEnter(e) {
51
+ var cell = _grid.getCellFromEvent(e);
52
+ if (cell) {
53
+ var $node = $(_grid.getCellNode(cell.row, cell.cell));
54
+ var text;
55
+ if ($node.innerWidth() < $node[0].scrollWidth) {
56
+ text = $.trim($node.text());
57
+ if (options.maxToolTipLength && text.length > options.maxToolTipLength) {
58
+ text = text.substr(0, options.maxToolTipLength - 3) + "...";
59
+ }
60
+ } else {
61
+ text = "";
62
+ }
63
+ $node.attr("title", text);
64
+ }
65
+ }
66
+
67
+ /**
68
+ * Handle mouse entering header cell to add/remove tooltip.
69
+ * @param {jQuery.Event} e - The event
70
+ * @param {object} args.column - The column definition
71
+ */
72
+ function handleHeaderMouseEnter(e, args) {
73
+ var column = args.column,
74
+ $node = $(e.target).closest(".slick-header-column");
75
+ if (!column.toolTip) {
76
+ $node.attr("title", ($node.innerWidth() < $node[0].scrollWidth) ? column.name : "");
77
+ }
78
+ }
79
+
80
+ // Public API
81
+ $.extend(this, {
82
+ "init": init,
83
+ "destroy": destroy
84
+ });
85
+ }
86
+ return AutoTooltips;
87
+
88
+ }));
@@ -0,0 +1,93 @@
1
+ // Universal module definition
2
+ (function (root, factory) {
3
+ if (typeof define === 'function' && define.amd) {
4
+ // AMD. Register as an anonymous module.
5
+ define(['jquery', '../slick.core'], factory);
6
+ } else {
7
+ // Browser globals
8
+ root.Slick.CellCopyManager = factory(root.jQuery, root.Slick);
9
+ }
10
+ }(this, function ($, Slick) {
11
+
12
+
13
+ function CellCopyManager() {
14
+ var _grid;
15
+ var _self = this;
16
+ var _copiedRanges;
17
+
18
+ function init(grid) {
19
+ _grid = grid;
20
+ _grid.onKeyDown.subscribe(handleKeyDown);
21
+ }
22
+
23
+ function destroy() {
24
+ _grid.onKeyDown.unsubscribe(handleKeyDown);
25
+ }
26
+
27
+ function handleKeyDown(e, args) {
28
+ var ranges;
29
+ if (!_grid.getEditorLock().isActive()) {
30
+ if (e.which == $.ui.keyCode.ESCAPE) {
31
+ if (_copiedRanges) {
32
+ e.preventDefault();
33
+ clearCopySelection();
34
+ _self.onCopyCancelled.notify({ranges: _copiedRanges});
35
+ _copiedRanges = null;
36
+ }
37
+ }
38
+
39
+ if (e.which == 67 && (e.ctrlKey || e.metaKey)) {
40
+ ranges = _grid.getSelectionModel().getSelectedRanges();
41
+ if (ranges.length != 0) {
42
+ e.preventDefault();
43
+ _copiedRanges = ranges;
44
+ markCopySelection(ranges);
45
+ _self.onCopyCells.notify({ranges: ranges});
46
+ }
47
+ }
48
+
49
+ if (e.which == 86 && (e.ctrlKey || e.metaKey)) {
50
+ if (_copiedRanges) {
51
+ e.preventDefault();
52
+ clearCopySelection();
53
+ ranges = _grid.getSelectionModel().getSelectedRanges();
54
+ _self.onPasteCells.notify({from: _copiedRanges, to: ranges});
55
+ _copiedRanges = null;
56
+ }
57
+ }
58
+ }
59
+ }
60
+
61
+ function markCopySelection(ranges) {
62
+ var columns = _grid.getColumns();
63
+ var hash = {};
64
+ for (var i = 0; i < ranges.length; i++) {
65
+ for (var j = ranges[i].fromRow; j <= ranges[i].toRow; j++) {
66
+ hash[j] = {};
67
+ for (var k = ranges[i].fromCell; k <= ranges[i].toCell; k++) {
68
+ hash[j][columns[k].id] = "copied";
69
+ }
70
+ }
71
+ }
72
+ _grid.setCellCssStyles("copy-manager", hash);
73
+ }
74
+
75
+ function clearCopySelection() {
76
+ _grid.removeCellCssStyles("copy-manager");
77
+ }
78
+
79
+ $.extend(this, {
80
+ "init": init,
81
+ "destroy": destroy,
82
+ "clearCopySelection": clearCopySelection,
83
+
84
+ "onCopyCells": new Slick.Event(),
85
+ "onCopyCancelled": new Slick.Event(),
86
+ "onPasteCells": new Slick.Event()
87
+ });
88
+ }
89
+
90
+
91
+ return CellCopyManager;
92
+
93
+ }));
@@ -0,0 +1,69 @@
1
+ // Universal module definition
2
+ (function (root, factory) {
3
+ if (typeof define === 'function' && define.amd) {
4
+ // AMD. Register as an anonymous module.
5
+ define(['jquery'], factory);
6
+ } else {
7
+ // Browser globals
8
+ root.Slick.CellRangeDecorator = factory(root.jQuery);
9
+ }
10
+ }(this, function ($) {
11
+
12
+ /***
13
+ * Displays an overlay on top of a given cell range.
14
+ *
15
+ * TODO:
16
+ * Currently, it blocks mouse events to DOM nodes behind it.
17
+ * Use FF and WebKit-specific "pointer-events" CSS style, or some kind of event forwarding.
18
+ * Could also construct the borders separately using 4 individual DIVs.
19
+ *
20
+ * @param {Grid} grid
21
+ * @param {Object} options
22
+ */
23
+ function CellRangeDecorator(grid, options) {
24
+ var _elem;
25
+ var _defaults = {
26
+ selectionCss: {
27
+ "zIndex": "9999",
28
+ "border": "2px dashed red"
29
+ }
30
+ };
31
+
32
+ options = $.extend(true, {}, _defaults, options);
33
+
34
+
35
+ function show(range) {
36
+ if (!_elem) {
37
+ _elem = $("<div></div>", {css: options.selectionCss})
38
+ .css("position", "absolute")
39
+ .appendTo(grid.getCanvasNode());
40
+ }
41
+
42
+ var from = grid.getCellNodeBox(range.fromRow, range.fromCell);
43
+ var to = grid.getCellNodeBox(range.toRow, range.toCell);
44
+
45
+ _elem.css({
46
+ top: from.top - 1,
47
+ left: from.left - 1,
48
+ height: to.bottom - from.top - 2,
49
+ width: to.right - from.left - 2
50
+ });
51
+
52
+ return _elem;
53
+ }
54
+
55
+ function hide() {
56
+ if (_elem) {
57
+ _elem.remove();
58
+ _elem = null;
59
+ }
60
+ }
61
+
62
+ $.extend(this, {
63
+ "show": show,
64
+ "hide": hide
65
+ });
66
+ }
67
+ return CellRangeDecorator;
68
+
69
+ }));
@@ -0,0 +1,118 @@
1
+ // Universal module definition
2
+ (function (root, factory) {
3
+ if (typeof define === 'function' && define.amd) {
4
+ // AMD. Register as an anonymous module.
5
+ define(['jquery', '../slick.core', './slick.cellrangedecorator'], factory);
6
+ } else {
7
+ // Browser globals
8
+ root.Slick.CellRangeSelector = factory(root.jQuery, root.Slick, root.Slick.CellRangeDecorator);
9
+ }
10
+ }(this, function ($, Slick, CellRangeDecorator) {
11
+
12
+ function CellRangeSelector(options) {
13
+ var _grid;
14
+ var _canvas;
15
+ var _dragging;
16
+ var _decorator;
17
+ var _self = this;
18
+ var _handler = new Slick.EventHandler();
19
+ var _defaults = {
20
+ selectionCss: {
21
+ "border": "2px dashed blue"
22
+ }
23
+ };
24
+
25
+
26
+ function init(grid) {
27
+ options = $.extend(true, {}, _defaults, options);
28
+ _decorator = new CellRangeDecorator(grid, options);
29
+ _grid = grid;
30
+ _canvas = _grid.getCanvasNode();
31
+ _handler
32
+ .subscribe(_grid.onDragInit, handleDragInit)
33
+ .subscribe(_grid.onDragStart, handleDragStart)
34
+ .subscribe(_grid.onDrag, handleDrag)
35
+ .subscribe(_grid.onDragEnd, handleDragEnd);
36
+ }
37
+
38
+ function destroy() {
39
+ _handler.unsubscribeAll();
40
+ }
41
+
42
+ function handleDragInit(e, dd) {
43
+ // prevent the grid from cancelling drag'n'drop by default
44
+ e.stopImmediatePropagation();
45
+ }
46
+
47
+ function handleDragStart(e, dd) {
48
+ var cell = _grid.getCellFromEvent(e);
49
+ if (_self.onBeforeCellRangeSelected.notify(cell) !== false) {
50
+ if (_grid.canCellBeSelected(cell.row, cell.cell)) {
51
+ _dragging = true;
52
+ e.stopImmediatePropagation();
53
+ }
54
+ }
55
+ if (!_dragging) {
56
+ return;
57
+ }
58
+
59
+ _grid.focus();
60
+
61
+ var start = _grid.getCellFromPoint(
62
+ dd.startX - $(_canvas).offset().left,
63
+ dd.startY - $(_canvas).offset().top);
64
+
65
+ dd.range = {start: start, end: {}};
66
+
67
+ return _decorator.show(new Slick.Range(start.row, start.cell));
68
+ }
69
+
70
+ function handleDrag(e, dd) {
71
+ if (!_dragging) {
72
+ return;
73
+ }
74
+ e.stopImmediatePropagation();
75
+
76
+ var end = _grid.getCellFromPoint(
77
+ e.pageX - $(_canvas).offset().left,
78
+ e.pageY - $(_canvas).offset().top);
79
+
80
+ if (!_grid.canCellBeSelected(end.row, end.cell)) {
81
+ return;
82
+ }
83
+
84
+ dd.range.end = end;
85
+ _decorator.show(new Slick.Range(dd.range.start.row, dd.range.start.cell, end.row, end.cell));
86
+ }
87
+
88
+ function handleDragEnd(e, dd) {
89
+ if (!_dragging) {
90
+ return;
91
+ }
92
+
93
+ _dragging = false;
94
+ e.stopImmediatePropagation();
95
+
96
+ _decorator.hide();
97
+ _self.onCellRangeSelected.notify({
98
+ range: new Slick.Range(
99
+ dd.range.start.row,
100
+ dd.range.start.cell,
101
+ dd.range.end.row,
102
+ dd.range.end.cell
103
+ )
104
+ });
105
+ }
106
+
107
+ $.extend(this, {
108
+ "init": init,
109
+ "destroy": destroy,
110
+
111
+ "onBeforeCellRangeSelected": new Slick.Event(),
112
+ "onCellRangeSelected": new Slick.Event()
113
+ });
114
+ }
115
+
116
+ return CellRangeSelector;
117
+
118
+ }));