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,303 @@
1
+ /*!
2
+ * jquery.event.drop - v 2.2
3
+ * Copyright (c) 2010 Three Dub Media - http://threedubmedia.com
4
+ * Open Source MIT License - http://threedubmedia.com/code/license
5
+ */
6
+ // Created: 2008-06-04
7
+ // Updated: 2012-05-21
8
+ // REQUIRES: jquery 1.7.x, event.drag 2.2
9
+
10
+ define(['jquery'], function ($) {
11
+
12
+
13
+ // Events: drop, dropstart, dropend
14
+
15
+ // add the jquery instance method
16
+ $.fn.drop = function (str, arg, opts) {
17
+ // figure out the event type
18
+ var type = typeof str == "string" ? str : "",
19
+ // figure out the event handler...
20
+ fn = $.isFunction(str) ? str : $.isFunction(arg) ? arg : null;
21
+ // fix the event type
22
+ if (type.indexOf("drop") !== 0)
23
+ type = "drop" + type;
24
+ // were options passed
25
+ opts = ( str == fn ? arg : opts ) || {};
26
+ // trigger or bind event handler
27
+ return fn ? this.bind(type, opts, fn) : this.trigger(type);
28
+ };
29
+
30
+ // DROP MANAGEMENT UTILITY
31
+ // returns filtered drop target elements, caches their positions
32
+ $.drop = function (opts) {
33
+ opts = opts || {};
34
+ // safely set new options...
35
+ drop.multi = opts.multi === true ? Infinity :
36
+ opts.multi === false ? 1 : !isNaN(opts.multi) ? opts.multi : drop.multi;
37
+ drop.delay = opts.delay || drop.delay;
38
+ drop.tolerance = $.isFunction(opts.tolerance) ? opts.tolerance :
39
+ opts.tolerance === null ? null : drop.tolerance;
40
+ drop.mode = opts.mode || drop.mode || 'intersect';
41
+ };
42
+
43
+ // local refs (increase compression)
44
+ var $event = $.event,
45
+ $special = $event.special,
46
+ // configure the drop special event
47
+ drop = $.event.special.drop = {
48
+
49
+ // these are the default settings
50
+ multi: 1, // allow multiple drop winners per dragged element
51
+ delay: 20, // async timeout delay
52
+ mode: 'overlap', // drop tolerance mode
53
+
54
+ // internal cache
55
+ targets: [],
56
+
57
+ // the key name for stored drop data
58
+ datakey: "dropdata",
59
+
60
+ // prevent bubbling for better performance
61
+ noBubble: true,
62
+
63
+ // count bound related events
64
+ add: function (obj) {
65
+ // read the interaction data
66
+ var data = $.data(this, drop.datakey);
67
+ // count another realted event
68
+ data.related += 1;
69
+ },
70
+
71
+ // forget unbound related events
72
+ remove: function () {
73
+ $.data(this, drop.datakey).related -= 1;
74
+ },
75
+
76
+ // configure the interactions
77
+ setup: function () {
78
+ // check for related events
79
+ if ($.data(this, drop.datakey))
80
+ return;
81
+ // initialize the drop element data
82
+ var data = {
83
+ related: 0,
84
+ active: [],
85
+ anyactive: 0,
86
+ winner: 0,
87
+ location: {}
88
+ };
89
+ // store the drop data on the element
90
+ $.data(this, drop.datakey, data);
91
+ // store the drop target in internal cache
92
+ drop.targets.push(this);
93
+ },
94
+
95
+ // destroy the configure interaction
96
+ teardown: function () {
97
+ var data = $.data(this, drop.datakey) || {};
98
+ // check for related events
99
+ if (data.related)
100
+ return;
101
+ // remove the stored data
102
+ $.removeData(this, drop.datakey);
103
+ // reference the targeted element
104
+ var element = this;
105
+ // remove from the internal cache
106
+ drop.targets = $.grep(drop.targets, function (target) {
107
+ return ( target !== element );
108
+ });
109
+ },
110
+
111
+ // shared event handler
112
+ handler: function (event, dd) {
113
+ // local vars
114
+ var results, $targets;
115
+ // make sure the right data is available
116
+ if (!dd)
117
+ return;
118
+ // handle various events
119
+ switch (event.type) {
120
+ // draginit, from $.event.special.drag
121
+ case 'mousedown': // DROPINIT >>
122
+ case 'touchstart': // DROPINIT >>
123
+ // collect and assign the drop targets
124
+ $targets = $(drop.targets);
125
+ if (typeof dd.drop == "string")
126
+ $targets = $targets.filter(dd.drop);
127
+ // reset drop data winner properties
128
+ $targets.each(function () {
129
+ var data = $.data(this, drop.datakey);
130
+ data.active = [];
131
+ data.anyactive = 0;
132
+ data.winner = 0;
133
+ });
134
+ // set available target elements
135
+ dd.droppable = $targets;
136
+ // activate drop targets for the initial element being dragged
137
+ $special.drag.hijack(event, "dropinit", dd);
138
+ break;
139
+ // drag, from $.event.special.drag
140
+ case 'mousemove': // TOLERATE >>
141
+ case 'touchmove': // TOLERATE >>
142
+ drop.event = event; // store the mousemove event
143
+ if (!drop.timer)
144
+ // monitor drop targets
145
+ drop.tolerate(dd);
146
+ break;
147
+ // dragend, from $.event.special.drag
148
+ case 'mouseup': // DROP >> DROPEND >>
149
+ case 'touchend': // DROP >> DROPEND >>
150
+ drop.timer = clearTimeout(drop.timer); // delete timer
151
+ if (dd.propagates) {
152
+ $special.drag.hijack(event, "drop", dd);
153
+ $special.drag.hijack(event, "dropend", dd);
154
+ }
155
+ break;
156
+
157
+ }
158
+ },
159
+
160
+ // returns the location positions of an element
161
+ locate: function (elem, index) {
162
+ var data = $.data(elem, drop.datakey),
163
+ $elem = $(elem),
164
+ posi = $elem.offset() || {},
165
+ height = $elem.outerHeight(),
166
+ width = $elem.outerWidth(),
167
+ location = {
168
+ elem: elem,
169
+ width: width,
170
+ height: height,
171
+ top: posi.top,
172
+ left: posi.left,
173
+ right: posi.left + width,
174
+ bottom: posi.top + height
175
+ };
176
+ // drag elements might not have dropdata
177
+ if (data) {
178
+ data.location = location;
179
+ data.index = index;
180
+ data.elem = elem;
181
+ }
182
+ return location;
183
+ },
184
+
185
+ // test the location positions of an element against another OR an X,Y coord
186
+ contains: function (target, test) { // target { location } contains test [x,y] or { location }
187
+ return ( ( test[0] || test.left ) >= target.left && ( test[0] || test.right ) <= target.right
188
+ && ( test[1] || test.top ) >= target.top && ( test[1] || test.bottom ) <= target.bottom );
189
+ },
190
+
191
+ // stored tolerance modes
192
+ modes: { // fn scope: "$.event.special.drop" object
193
+ // target with mouse wins, else target with most overlap wins
194
+ 'intersect': function (event, proxy, target) {
195
+ return this.contains(target, [ event.pageX, event.pageY ]) ? // check cursor
196
+ 1e9 : this.modes.overlap.apply(this, arguments); // check overlap
197
+ },
198
+ // target with most overlap wins
199
+ 'overlap': function (event, proxy, target) {
200
+ // calculate the area of overlap...
201
+ return Math.max(0, Math.min(target.bottom, proxy.bottom) - Math.max(target.top, proxy.top))
202
+ * Math.max(0, Math.min(target.right, proxy.right) - Math.max(target.left, proxy.left));
203
+ },
204
+ // proxy is completely contained within target bounds
205
+ 'fit': function (event, proxy, target) {
206
+ return this.contains(target, proxy) ? 1 : 0;
207
+ },
208
+ // center of the proxy is contained within target bounds
209
+ 'middle': function (event, proxy, target) {
210
+ return this.contains(target, [ proxy.left + proxy.width * .5, proxy.top + proxy.height * .5 ]) ? 1 : 0;
211
+ }
212
+ },
213
+
214
+ // sort drop target cache by by winner (dsc), then index (asc)
215
+ sort: function (a, b) {
216
+ return ( b.winner - a.winner ) || ( a.index - b.index );
217
+ },
218
+
219
+ // async, recursive tolerance execution
220
+ tolerate: function (dd) {
221
+ // declare local refs
222
+ var i, drp, drg, data, arr, len, elem,
223
+ // interaction iteration variables
224
+ x = 0, ia, end = dd.interactions.length,
225
+ // determine the mouse coords
226
+ xy = [ drop.event.pageX, drop.event.pageY ],
227
+ // custom or stored tolerance fn
228
+ tolerance = drop.tolerance || drop.modes[ drop.mode ];
229
+ // go through each passed interaction...
230
+ do if (ia = dd.interactions[x]) {
231
+ // check valid interaction
232
+ if (!ia)
233
+ return;
234
+ // initialize or clear the drop data
235
+ ia.drop = [];
236
+ // holds the drop elements
237
+ arr = [];
238
+ len = ia.droppable.length;
239
+ // determine the proxy location, if needed
240
+ if (tolerance)
241
+ drg = drop.locate(ia.proxy);
242
+ // reset the loop
243
+ i = 0;
244
+ // loop each stored drop target
245
+ do if (elem = ia.droppable[i]) {
246
+ data = $.data(elem, drop.datakey);
247
+ drp = data.location;
248
+ if (!drp) continue;
249
+ // find a winner: tolerance function is defined, call it
250
+ data.winner = tolerance ? tolerance.call(drop, drop.event, drg, drp)
251
+ // mouse position is always the fallback
252
+ : drop.contains(drp, xy) ? 1 : 0;
253
+ arr.push(data);
254
+ } while (++i < len); // loop
255
+ // sort the drop targets
256
+ arr.sort(drop.sort);
257
+ // reset the loop
258
+ i = 0;
259
+ // loop through all of the targets again
260
+ do if (data = arr[ i ]) {
261
+ // winners...
262
+ if (data.winner && ia.drop.length < drop.multi) {
263
+ // new winner... dropstart
264
+ if (!data.active[x] && !data.anyactive) {
265
+ // check to make sure that this is not prevented
266
+ if ($special.drag.hijack(drop.event, "dropstart", dd, x, data.elem)[0] !== false) {
267
+ data.active[x] = 1;
268
+ data.anyactive += 1;
269
+ }
270
+ // if false, it is not a winner
271
+ else
272
+ data.winner = 0;
273
+ }
274
+ // if it is still a winner
275
+ if (data.winner)
276
+ ia.drop.push(data.elem);
277
+ }
278
+ // losers...
279
+ else if (data.active[x] && data.anyactive == 1) {
280
+ // former winner... dropend
281
+ $special.drag.hijack(drop.event, "dropend", dd, x, data.elem);
282
+ data.active[x] = 0;
283
+ data.anyactive -= 1;
284
+ }
285
+ } while (++i < len); // loop
286
+ } while (++x < end) // loop
287
+ // check if the mouse is still moving or is idle
288
+ if (drop.last && xy[0] == drop.last.pageX && xy[1] == drop.last.pageY)
289
+ delete drop.timer; // idle, don't recurse
290
+ else // recurse
291
+ drop.timer = setTimeout(function () {
292
+ drop.tolerate(dd);
293
+ }, drop.delay);
294
+ // remember event, to compare idleness
295
+ drop.last = drop.event;
296
+ }
297
+
298
+ };
299
+
300
+ // share the same special event configuration with related events...
301
+ $special.dropinit = $special.dropstart = $special.dropend = drop;
302
+
303
+ }); // confine scope
@@ -0,0 +1,157 @@
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.Controls = root.Slick.Controls || {};
9
+ root.Slick.Controls.ColumnPicker = factory(root.jQuery);
10
+ }
11
+ }(this, function ($) {
12
+
13
+ function SlickColumnPicker(columns, grid, options) {
14
+ var $menu;
15
+ var columnCheckboxes;
16
+
17
+ var defaults = {
18
+ fadeSpeed:250
19
+ };
20
+
21
+ function init() {
22
+ grid.onHeaderContextMenu.subscribe(handleHeaderContextMenu);
23
+ grid.onColumnsReordered.subscribe(updateColumnOrder);
24
+ options = $.extend({}, defaults, options);
25
+
26
+ $menu = $("<span class='slick-columnpicker' style='display:none;position:absolute;z-index:20;' />").appendTo(document.body);
27
+
28
+ $menu.bind("mouseleave", function (e) {
29
+ $(this).fadeOut(options.fadeSpeed)
30
+ });
31
+ $menu.bind("click", updateColumn);
32
+
33
+ }
34
+
35
+ function handleHeaderContextMenu(e, args) {
36
+ e.preventDefault();
37
+ $menu.empty();
38
+ updateColumnOrder();
39
+ columnCheckboxes = [];
40
+
41
+ var $li, $input;
42
+ for (var i = 0; i < columns.length; i++) {
43
+ $li = $("<li />").appendTo($menu);
44
+ $input = $("<input type='checkbox' />").data("column-id", columns[i].id);
45
+ columnCheckboxes.push($input);
46
+
47
+ if (grid.getColumnIndex(columns[i].id) != null) {
48
+ $input.attr("checked", "checked");
49
+ }
50
+
51
+ $("<label />")
52
+ .text(columns[i].name)
53
+ .prepend($input)
54
+ .appendTo($li);
55
+ }
56
+
57
+ $("<hr/>").appendTo($menu);
58
+ $li = $("<li />").appendTo($menu);
59
+ $input = $("<input type='checkbox' />").data("option", "autoresize");
60
+ $("<label />")
61
+ .text("Force fit columns")
62
+ .prepend($input)
63
+ .appendTo($li);
64
+ if (grid.getOptions().forceFitColumns) {
65
+ $input.attr("checked", "checked");
66
+ }
67
+
68
+ $li = $("<li />").appendTo($menu);
69
+ $input = $("<input type='checkbox' />").data("option", "syncresize");
70
+ $("<label />")
71
+ .text("Synchronous resize")
72
+ .prepend($input)
73
+ .appendTo($li);
74
+ if (grid.getOptions().syncColumnCellResize) {
75
+ $input.attr("checked", "checked");
76
+ }
77
+
78
+ $menu
79
+ .css("top", e.pageY - 10)
80
+ .css("left", e.pageX - 10)
81
+ .fadeIn(options.fadeSpeed);
82
+ }
83
+
84
+ function updateColumnOrder() {
85
+ // Because columns can be reordered, we have to update the `columns`
86
+ // to reflect the new order, however we can't just take `grid.getColumns()`,
87
+ // as it does not include columns currently hidden by the picker.
88
+ // We create a new `columns` structure by leaving currently-hidden
89
+ // columns in their original ordinal position and interleaving the results
90
+ // of the current column sort.
91
+ var current = grid.getColumns().slice(0);
92
+ var ordered = new Array(columns.length);
93
+ for (var i = 0; i < ordered.length; i++) {
94
+ if ( grid.getColumnIndex(columns[i].id) === undefined ) {
95
+ // If the column doesn't return a value from getColumnIndex,
96
+ // it is hidden. Leave it in this position.
97
+ ordered[i] = columns[i];
98
+ } else {
99
+ // Otherwise, grab the next visible column.
100
+ ordered[i] = current.shift();
101
+ }
102
+ }
103
+ columns = ordered;
104
+ }
105
+
106
+ function updateColumn(e) {
107
+ if ($(e.target).data("option") == "autoresize") {
108
+ if (e.target.checked) {
109
+ grid.setOptions({forceFitColumns:true});
110
+ grid.autosizeColumns();
111
+ } else {
112
+ grid.setOptions({forceFitColumns:false});
113
+ }
114
+ return;
115
+ }
116
+
117
+ if ($(e.target).data("option") == "syncresize") {
118
+ if (e.target.checked) {
119
+ grid.setOptions({syncColumnCellResize:true});
120
+ } else {
121
+ grid.setOptions({syncColumnCellResize:false});
122
+ }
123
+ return;
124
+ }
125
+
126
+ if ($(e.target).is(":checkbox")) {
127
+ var visibleColumns = [];
128
+ $.each(columnCheckboxes, function (i, e) {
129
+ if ($(this).is(":checked")) {
130
+ visibleColumns.push(columns[i]);
131
+ }
132
+ });
133
+
134
+ if (!visibleColumns.length) {
135
+ $(e.target).attr("checked", "checked");
136
+ return;
137
+ }
138
+
139
+ grid.setColumns(visibleColumns);
140
+ }
141
+ }
142
+
143
+ function getAllColumns() {
144
+ return columns;
145
+ }
146
+
147
+ init();
148
+
149
+ return {
150
+ "getAllColumns": getAllColumns
151
+ };
152
+ }
153
+
154
+ // Slick.Controls.ColumnPicker
155
+ return SlickColumnPicker;
156
+
157
+ }));