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.
- data/MIT-LICENSE +20 -0
- data/README.md +5 -0
- data/Rakefile +40 -0
- data/app/assets/stylesheets/slickgrid-requirejs-rails/application.css +13 -0
- data/app/controllers/slickgrid-requirejs-rails/application_controller.rb +4 -0
- data/app/helpers/slickgrid-requirejs-rails/application_helper.rb +4 -0
- data/app/views/layouts/slickgrid-requirejs-rails/application.html.erb +14 -0
- data/config/routes.rb +2 -0
- data/lib/slickgrid-requirejs-rails.rb +4 -0
- data/lib/slickgrid-requirejs-rails/engine.rb +5 -0
- data/lib/slickgrid-requirejs-rails/version.rb +3 -0
- data/lib/tasks/slickgrid-requirejs-rails_tasks.rake +35 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/adapters/jquery-adapter.js +4 -0
- data/test/dummy/app/assets/javascripts/application.js.coffee +33 -0
- data/test/dummy/app/assets/javascripts/jquery.spreadsheet.js.coffee +105 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/assets/stylesheets/examples.css +4 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/controllers/examples_controller.rb +4 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/helpers/examples_helper.rb +2 -0
- data/test/dummy/app/views/examples/simple.html.erb +7 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +60 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/better_errors.rb +1 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/requirejs.yml +13 -0
- data/test/dummy/config/routes.rb +8 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/log/development.log +2689 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/test/functional/examples_controller_test.rb +9 -0
- data/test/dummy/test/unit/helpers/examples_helper_test.rb +4 -0
- data/test/dummy/tmp/cache/assets/C27/240/sprockets%2Fc8d5e87e720ed4622105328524983048 +0 -0
- data/test/dummy/tmp/cache/assets/C42/A50/sprockets%2Fd83155902707b71eb877b3e0208205a0 +0 -0
- data/test/dummy/tmp/cache/assets/C80/150/sprockets%2F0d3881005b0646df783d5c24683d34f5 +0 -0
- data/test/dummy/tmp/cache/assets/C86/850/sprockets%2F75355848fa7b7065acb91b2634b29085 +0 -0
- data/test/dummy/tmp/cache/assets/C94/2C0/sprockets%2Fb5279968d5df8680a33776e0b74a8216 +0 -0
- data/test/dummy/tmp/cache/assets/CA9/390/sprockets%2F1891532332d1ff2d2ec0c4884168be24 +0 -0
- data/test/dummy/tmp/cache/assets/CB0/3D0/sprockets%2F378c2bc8804c6452508a5905c47b38ca +0 -0
- data/test/dummy/tmp/cache/assets/CB4/7D0/sprockets%2F1dc73f77b8d81bbc4a23579054295723 +0 -0
- data/test/dummy/tmp/cache/assets/CB7/EB0/sprockets%2F4de19cf2920983cc7502b38a537849a3 +0 -0
- data/test/dummy/tmp/cache/assets/CBA/210/sprockets%2F9cb316b6777b84fc332524911d7e645e +0 -0
- data/test/dummy/tmp/cache/assets/CBD/8E0/sprockets%2F5b5f989386cc9495a08127dbc42b3615 +0 -0
- data/test/dummy/tmp/cache/assets/CCA/480/sprockets%2F6d10d00d7c82276924f3e22e6210fa0b +0 -0
- data/test/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
- data/test/dummy/tmp/cache/assets/CDC/260/sprockets%2F6b925351de71c9bd9c021310669dfc70 +0 -0
- data/test/dummy/tmp/cache/assets/CDE/090/sprockets%2F15056f2ede4e042d8737f4801fa6b157 +0 -0
- data/test/dummy/tmp/cache/assets/CE4/AC0/sprockets%2Fe1db88f51455f23258896cb316e52bc1 +0 -0
- data/test/dummy/tmp/cache/assets/CF0/B10/sprockets%2Fb50252ad18b893dc145ef2896e38d689 +0 -0
- data/test/dummy/tmp/cache/assets/CF1/750/sprockets%2F8c683caf79c53642dd4e12a89c657355 +0 -0
- data/test/dummy/tmp/cache/assets/CF4/130/sprockets%2F2e2ec908b79eb4084c57c7c9632899a2 +0 -0
- data/test/dummy/tmp/cache/assets/D01/E90/sprockets%2Ffd358252a8aa0b738f61a75ea81b0134 +0 -0
- data/test/dummy/tmp/cache/assets/D09/F30/sprockets%2F330e6425d10d2cb797c3f45ca374b84e +0 -0
- data/test/dummy/tmp/cache/assets/D0B/C60/sprockets%2F24182be4c99c8f971c1596aa452a2c0a +0 -0
- data/test/dummy/tmp/cache/assets/D1F/5D0/sprockets%2F9dba5447e453628c0bfa9137f85df278 +0 -0
- data/test/dummy/tmp/cache/assets/D29/260/sprockets%2F5a18f14fa7a839360315acb05b1e3bf0 +0 -0
- data/test/dummy/tmp/cache/assets/D32/230/sprockets%2Fb34e03561a646fac533ce7d4b560c2b8 +0 -0
- data/test/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/test/dummy/tmp/cache/assets/D3F/200/sprockets%2F8acb8521e88321b224d6bbf338d398cc +0 -0
- data/test/dummy/tmp/cache/assets/D3F/980/sprockets%2F1e2991c760ec4319a1fe5b94bc2ef633 +0 -0
- data/test/dummy/tmp/cache/assets/D48/090/sprockets%2F6d95fa4274b968de1d414e21cf46ca85 +0 -0
- data/test/dummy/tmp/cache/assets/D4B/4D0/sprockets%2F6205d4779aae40ce1a9a086c46978fef +0 -0
- data/test/dummy/tmp/cache/assets/D4E/D00/sprockets%2F1a6846f0a837ae2524e2f9ec89e6ef43 +0 -0
- data/test/dummy/tmp/cache/assets/D54/730/sprockets%2F1202c3cd8b0271cc02327e88b0bfad5e +0 -0
- data/test/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/test/dummy/tmp/cache/assets/D5D/FF0/sprockets%2F9e1b9c655d94b7725c984f7ce6b8d6b3 +0 -0
- data/test/dummy/tmp/cache/assets/D64/0D0/sprockets%2Fbf47d6bc8fc84f8d8764c1f5955f1786 +0 -0
- data/test/dummy/tmp/cache/assets/D68/6C0/sprockets%2Fab07dab58b519282aeaf3ea945f46513 +0 -0
- data/test/dummy/tmp/cache/assets/D6A/EF0/sprockets%2F2eb65cc490ad96cc38604918b0caeb90 +0 -0
- data/test/dummy/tmp/cache/assets/D71/9A0/sprockets%2F8fe2ebb722d62d1fdd63068c57a6408d +0 -0
- data/test/dummy/tmp/cache/assets/D77/210/sprockets%2F6586fb2ab2cc992e642e53e4cc3e2e85 +0 -0
- data/test/dummy/tmp/cache/assets/D84/460/sprockets%2Fed41cc36973e3e16cce4f876be7297b8 +0 -0
- data/test/dummy/tmp/cache/assets/D86/600/sprockets%2Ff9be8df0f5835948b646a94b47cd23cf +0 -0
- data/test/dummy/tmp/cache/assets/D95/530/sprockets%2F0cbcab75dec40d0e637629a484beb653 +0 -0
- data/test/dummy/tmp/cache/assets/D98/070/sprockets%2F4c95e212d3de047f6ac4f2fe09c40de2 +0 -0
- data/test/dummy/tmp/cache/assets/D98/270/sprockets%2F0e7c025e3de60b80a6c5e5fcc7db6832 +0 -0
- data/test/dummy/tmp/cache/assets/D9C/520/sprockets%2Ffc5383ee26303f5906ad273a3fe5dcea +0 -0
- data/test/dummy/tmp/cache/assets/D9F/9B0/sprockets%2Ff4b8b3465acc5f71633cf0af5858c4ac +0 -0
- data/test/dummy/tmp/cache/assets/DA1/EB0/sprockets%2F2d2f2f5ed3c476dea3c3a3d9e2980a85 +0 -0
- data/test/dummy/tmp/cache/assets/DA2/890/sprockets%2F1fd7028cdd4ff7c24e4a630c1f38af88 +0 -0
- data/test/dummy/tmp/cache/assets/DA3/080/sprockets%2Ffb77a66783db0b5812e3fdbabe4608f6 +0 -0
- data/test/dummy/tmp/cache/assets/DB2/E50/sprockets%2Ff337be9ae1863f27a87c882feae9ee21 +0 -0
- data/test/dummy/tmp/cache/assets/DC1/E70/sprockets%2F827c6100c3adc3c91ddfe84da51fbd15 +0 -0
- data/test/dummy/tmp/cache/assets/DCA/380/sprockets%2Fc0ccdcba1aa3b504045ebb1b2400b9d0 +0 -0
- data/test/dummy/tmp/cache/assets/DCA/EA0/sprockets%2F139ab8cdba6b44b58ae3647dbeea8145 +0 -0
- data/test/dummy/tmp/cache/assets/DEF/8E0/sprockets%2F3b4c400d4a5c7db0cd8d02b7e3cb79df +0 -0
- data/test/dummy/tmp/cache/assets/E0C/530/sprockets%2F0ce78cd1a399cdb66ca6cd2f93e93f8b +0 -0
- data/test/dummy/tmp/cache/assets/E11/4E0/sprockets%2F86e145a39f85cceeaffdff91ebb61449 +0 -0
- data/test/dummy/tmp/cache/assets/E15/B80/sprockets%2F68eff298c6dad0b39ddf0d61ccd9896d +0 -0
- data/test/dummy/tmp/cache/assets/E22/130/sprockets%2Fbeaa50ffc31b2c6a5625ce1a85efc38e +0 -0
- data/test/dummy/tmp/cache/assets/E2D/B60/sprockets%2F5aa2b493bf9c5b69eafecd96aa0af066 +0 -0
- data/test/dummy/tmp/cache/assets/E38/8F0/sprockets%2F1cb65daaffa8b6d886108e4eaf6d9bb9 +0 -0
- data/test/dummy/tmp/cache/assets/E66/810/sprockets%2F5de7ae60bfff07ae5fd98d19d9b1a4da +0 -0
- data/test/dummy/tmp/cache/sass/a27500b667404a158ab7c09449b801b001e64ed8/all.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/a27500b667404a158ab7c09449b801b001e64ed8/default-theme.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/a27500b667404a158ab7c09449b801b001e64ed8/editors.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/a27500b667404a158ab7c09449b801b001e64ed8/grid.css.scssc +0 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/slickgrid-requirejs-rails_test.rb +7 -0
- data/test/test_helper.rb +15 -0
- data/vendor/assets/images/slick/actions.gif +0 -0
- data/vendor/assets/images/slick/ajax-loader-small.gif +0 -0
- data/vendor/assets/images/slick/arrow_redo.png +0 -0
- data/vendor/assets/images/slick/arrow_right_peppermint.png +0 -0
- data/vendor/assets/images/slick/arrow_right_spearmint.png +0 -0
- data/vendor/assets/images/slick/arrow_undo.png +0 -0
- data/vendor/assets/images/slick/bullet_blue.png +0 -0
- data/vendor/assets/images/slick/bullet_star.png +0 -0
- data/vendor/assets/images/slick/bullet_toggle_minus.png +0 -0
- data/vendor/assets/images/slick/bullet_toggle_plus.png +0 -0
- data/vendor/assets/images/slick/calendar.gif +0 -0
- data/vendor/assets/images/slick/collapse.gif +0 -0
- data/vendor/assets/images/slick/comment_yellow.gif +0 -0
- data/vendor/assets/images/slick/down.gif +0 -0
- data/vendor/assets/images/slick/drag-handle.png +0 -0
- data/vendor/assets/images/slick/editor-helper-bg.gif +0 -0
- data/vendor/assets/images/slick/expand.gif +0 -0
- data/vendor/assets/images/slick/header-bg.gif +0 -0
- data/vendor/assets/images/slick/header-columns-bg.gif +0 -0
- data/vendor/assets/images/slick/header-columns-over-bg.gif +0 -0
- data/vendor/assets/images/slick/help.png +0 -0
- data/vendor/assets/images/slick/info.gif +0 -0
- data/vendor/assets/images/slick/listview.gif +0 -0
- data/vendor/assets/images/slick/pencil.gif +0 -0
- data/vendor/assets/images/slick/row-over-bg.gif +0 -0
- data/vendor/assets/images/slick/sort-asc.gif +0 -0
- data/vendor/assets/images/slick/sort-asc.png +0 -0
- data/vendor/assets/images/slick/sort-desc.gif +0 -0
- data/vendor/assets/images/slick/sort-desc.png +0 -0
- data/vendor/assets/images/slick/stripes.png +0 -0
- data/vendor/assets/images/slick/tag_red.png +0 -0
- data/vendor/assets/images/slick/tick.png +0 -0
- data/vendor/assets/images/slick/user_identity.gif +0 -0
- data/vendor/assets/images/slick/user_identity_plus.gif +0 -0
- data/vendor/assets/javascripts/jquery.event/drag.js +407 -0
- data/vendor/assets/javascripts/jquery.event/drop.js +303 -0
- data/vendor/assets/javascripts/slick/controls/slick.columnpicker.js +157 -0
- data/vendor/assets/javascripts/slick/controls/slick.pager.js +158 -0
- data/vendor/assets/javascripts/slick/plugins/slick.autotooltips.js +88 -0
- data/vendor/assets/javascripts/slick/plugins/slick.cellcopymanager.js +93 -0
- data/vendor/assets/javascripts/slick/plugins/slick.cellrangedecorator.js +69 -0
- data/vendor/assets/javascripts/slick/plugins/slick.cellrangeselector.js +118 -0
- data/vendor/assets/javascripts/slick/plugins/slick.cellselectionmodel.js +160 -0
- data/vendor/assets/javascripts/slick/plugins/slick.checkboxselectcolumn.js +158 -0
- data/vendor/assets/javascripts/slick/plugins/slick.headerbuttons.js +181 -0
- data/vendor/assets/javascripts/slick/plugins/slick.headermenu.js +278 -0
- data/vendor/assets/javascripts/slick/plugins/slick.rowmovemanager.js +144 -0
- data/vendor/assets/javascripts/slick/plugins/slick.rowselectionmodel.js +193 -0
- data/vendor/assets/javascripts/slick/slick.core.js +468 -0
- data/vendor/assets/javascripts/slick/slick.dataview.aggregators.js +121 -0
- data/vendor/assets/javascripts/slick/slick.dataview.js +1061 -0
- data/vendor/assets/javascripts/slick/slick.editors.js +517 -0
- data/vendor/assets/javascripts/slick/slick.formatters.js +65 -0
- data/vendor/assets/javascripts/slick/slick.grid.js +3317 -0
- data/vendor/assets/javascripts/slick/slick.groupitemmetadataprovider.js +149 -0
- data/vendor/assets/javascripts/slick/slick.remotemodel.js +185 -0
- data/vendor/assets/stylesheets/slick/all.css.scss +3 -0
- data/vendor/assets/stylesheets/slick/controls/columnpicker.css.scss +30 -0
- data/vendor/assets/stylesheets/slick/controls/pager.css.scss +41 -0
- data/vendor/assets/stylesheets/slick/controls/slick.columnpicker.css +31 -0
- data/vendor/assets/stylesheets/slick/controls/slick.pager.css +41 -0
- data/vendor/assets/stylesheets/slick/default-theme.css.scss +104 -0
- data/vendor/assets/stylesheets/slick/editors.css.scss +100 -0
- data/vendor/assets/stylesheets/slick/grid.css.scss +174 -0
- data/vendor/assets/stylesheets/slick/plugins/slick.headerbuttons.css +39 -0
- data/vendor/assets/stylesheets/slick/plugins/slick.headermenu.css +59 -0
- data/vendor/assets/stylesheets/slick/remotemodel.css.scss +20 -0
- data/vendor/assets/stylesheets/slick/slick.grid.css +157 -0
- 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
|
+
}));
|