rails_handsontable 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +14 -2
- data/lib/rails_handsontable/version.rb +1 -1
- data/vendor/assets/javascripts/jquery.handsontable.full.js +84 -40
- data/vendor/assets/javascripts/jquery.handsontable.js +84 -40
- data/vendor/assets/stylesheets/jquery.handsontable.css +2 -2
- data/vendor/assets/stylesheets/jquery.handsontable.full.css +2 -2
- metadata +1 -1
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
# Browser base Excel In rails gem . Excel can show in html
|
2
|
+
|
1
3
|
# RailsHandsontable
|
2
4
|
|
3
|
-
|
5
|
+
This gem is created for rails users .
|
4
6
|
|
5
7
|
## Installation
|
6
8
|
|
@@ -18,7 +20,12 @@ Or install it yourself as:
|
|
18
20
|
|
19
21
|
## Usage
|
20
22
|
|
21
|
-
|
23
|
+
Add this line to your application's application.js
|
24
|
+
|
25
|
+
//= requirejquery.handsontable.full
|
26
|
+
Add this line to your application's application.css
|
27
|
+
|
28
|
+
*= require jquery.handsontable.full
|
22
29
|
|
23
30
|
## Contributing
|
24
31
|
|
@@ -27,3 +34,8 @@ TODO: Write usage instructions here
|
|
27
34
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
35
|
4. Push to the branch (`git push origin my-new-feature`)
|
29
36
|
5. Create new Pull Request
|
37
|
+
|
38
|
+
|
39
|
+
HI i will add more features in it to make handsontable more usefull in ruby on rails application .
|
40
|
+
Please give your response .
|
41
|
+
For know about handsontable please visit http://handsontable.com/ .
|
@@ -1,12 +1,12 @@
|
|
1
1
|
/**
|
2
|
-
* Handsontable 0.10.
|
2
|
+
* Handsontable 0.10.3
|
3
3
|
* Handsontable is a simple jQuery plugin for editable tables with basic copy-paste compatibility with Excel and Google Docs
|
4
4
|
*
|
5
5
|
* Copyright 2012, Marcin Warpechowski
|
6
6
|
* Licensed under the MIT license.
|
7
7
|
* http://handsontable.com/
|
8
8
|
*
|
9
|
-
* Date:
|
9
|
+
* Date: Mon Feb 10 2014 14:15:11 GMT+0100 (CET)
|
10
10
|
*/
|
11
11
|
/*jslint white: true, browser: true, plusplus: true, indent: 4, maxerr: 50 */
|
12
12
|
|
@@ -329,14 +329,14 @@ Handsontable.Core = function (rootElement, userSettings) {
|
|
329
329
|
rlen = instance.countRows();
|
330
330
|
if (rlen < priv.settings.minRows) {
|
331
331
|
for (r = 0; r < priv.settings.minRows - rlen; r++) {
|
332
|
-
datamap.createRow();
|
332
|
+
datamap.createRow(instance.countRows(), 1, true);
|
333
333
|
}
|
334
334
|
}
|
335
335
|
|
336
336
|
//should I add empty rows to meet minSpareRows?
|
337
337
|
if (emptyRows < priv.settings.minSpareRows) {
|
338
338
|
for (; emptyRows < priv.settings.minSpareRows && instance.countRows() < priv.settings.maxRows; emptyRows++) {
|
339
|
-
datamap.createRow();
|
339
|
+
datamap.createRow(instance.countRows(), 1, true);
|
340
340
|
}
|
341
341
|
}
|
342
342
|
|
@@ -346,14 +346,14 @@ Handsontable.Core = function (rootElement, userSettings) {
|
|
346
346
|
//should I add empty cols to meet minCols?
|
347
347
|
if (!priv.settings.columns && instance.countCols() < priv.settings.minCols) {
|
348
348
|
for (; instance.countCols() < priv.settings.minCols; emptyCols++) {
|
349
|
-
datamap.createCol();
|
349
|
+
datamap.createCol(instance.countCols(), 1, true);
|
350
350
|
}
|
351
351
|
}
|
352
352
|
|
353
353
|
//should I add empty cols to meet minSpareCols?
|
354
354
|
if (!priv.settings.columns && instance.dataType === 'array' && emptyCols < priv.settings.minSpareCols) {
|
355
355
|
for (; emptyCols < priv.settings.minSpareCols && instance.countCols() < priv.settings.maxCols; emptyCols++) {
|
356
|
-
datamap.createCol();
|
356
|
+
datamap.createCol(instance.countCols(), 1, true);
|
357
357
|
}
|
358
358
|
}
|
359
359
|
|
@@ -2271,7 +2271,7 @@ Handsontable.Core = function (rootElement, userSettings) {
|
|
2271
2271
|
/**
|
2272
2272
|
* Handsontable version
|
2273
2273
|
*/
|
2274
|
-
this.version = '0.10.
|
2274
|
+
this.version = '0.10.3'; //inserted by grunt from package.json
|
2275
2275
|
};
|
2276
2276
|
|
2277
2277
|
var DefaultSettings = function () {};
|
@@ -3635,7 +3635,26 @@ Handsontable.helper.proxy = function (fun, context) {
|
|
3635
3635
|
};
|
3636
3636
|
};
|
3637
3637
|
|
3638
|
-
|
3638
|
+
/**
|
3639
|
+
* Factory that produces a function for searching methods (or any properties) which could be defined directly in
|
3640
|
+
* table configuration or implicitly, within cell type definition.
|
3641
|
+
*
|
3642
|
+
* For example: renderer can be defined explicitly using "renderer" property in column configuration or it can be
|
3643
|
+
* defined implicitly using "type" property.
|
3644
|
+
*
|
3645
|
+
* Methods/properties defined explicitly always takes precedence over those defined through "type".
|
3646
|
+
*
|
3647
|
+
* If the method/property is not found in an object, searching is continued recursively through prototype chain, until
|
3648
|
+
* it reaches the Object.prototype.
|
3649
|
+
*
|
3650
|
+
*
|
3651
|
+
* @param methodName {String} name of the method/property to search (i.e. 'renderer', 'validator', 'copyable')
|
3652
|
+
* @param allowUndefined {Boolean} [optional] if false, the search is continued if methodName has not been found in cell "type"
|
3653
|
+
* @returns {Function}
|
3654
|
+
*/
|
3655
|
+
Handsontable.helper.cellMethodLookupFactory = function (methodName, allowUndefined) {
|
3656
|
+
|
3657
|
+
allowUndefined = typeof allowUndefined == 'undefined' ? true : allowUndefined;
|
3639
3658
|
|
3640
3659
|
return function cellMethodLookup (row, col) {
|
3641
3660
|
|
@@ -3660,7 +3679,12 @@ Handsontable.helper.cellMethodLookupFactory = function (methodName) {
|
|
3660
3679
|
|
3661
3680
|
type = translateTypeNameToObject(properties.type);
|
3662
3681
|
|
3663
|
-
|
3682
|
+
if (type.hasOwnProperty(methodName)) {
|
3683
|
+
return type[methodName]; //method defined in type.
|
3684
|
+
} else if (allowUndefined) {
|
3685
|
+
return; //method does not defined in type (eg. validator), returns undefined
|
3686
|
+
}
|
3687
|
+
|
3664
3688
|
}
|
3665
3689
|
|
3666
3690
|
return getMethodFromProperties(Handsontable.helper.getPrototypeOf(properties));
|
@@ -3855,7 +3879,7 @@ Handsontable.SelectionPoint.prototype.arr = function (arr) {
|
|
3855
3879
|
* Creates row at the bottom of the data array
|
3856
3880
|
* @param {Number} [index] Optional. Index of the row before which the new row will be inserted
|
3857
3881
|
*/
|
3858
|
-
Handsontable.DataMap.prototype.createRow = function (index, amount) {
|
3882
|
+
Handsontable.DataMap.prototype.createRow = function (index, amount, createdAutomatically) {
|
3859
3883
|
var row
|
3860
3884
|
, colCount = this.instance.countCols()
|
3861
3885
|
, numberOfCreatedRows = 0
|
@@ -3898,7 +3922,7 @@ Handsontable.SelectionPoint.prototype.arr = function (arr) {
|
|
3898
3922
|
}
|
3899
3923
|
|
3900
3924
|
|
3901
|
-
this.instance.PluginHooks.run('afterCreateRow', index, numberOfCreatedRows);
|
3925
|
+
this.instance.PluginHooks.run('afterCreateRow', index, numberOfCreatedRows, createdAutomatically);
|
3902
3926
|
this.instance.forceFullRender = true; //used when data was changed
|
3903
3927
|
|
3904
3928
|
return numberOfCreatedRows;
|
@@ -3909,7 +3933,7 @@ Handsontable.SelectionPoint.prototype.arr = function (arr) {
|
|
3909
3933
|
* @param {Number} [index] Optional. Index of the column before which the new column will be inserted
|
3910
3934
|
* * @param {Number} [amount] Optional.
|
3911
3935
|
*/
|
3912
|
-
Handsontable.DataMap.prototype.createCol = function (index, amount) {
|
3936
|
+
Handsontable.DataMap.prototype.createCol = function (index, amount, createdAutomatically) {
|
3913
3937
|
if (this.instance.dataType === 'object' || this.instance.getSettings().columns) {
|
3914
3938
|
throw new Error("Cannot create new column. When data source in an object, " +
|
3915
3939
|
"you can only have as much columns as defined in first data row, data schema or in the 'columns' setting." +
|
@@ -3952,7 +3976,7 @@ Handsontable.SelectionPoint.prototype.arr = function (arr) {
|
|
3952
3976
|
currentIndex++;
|
3953
3977
|
}
|
3954
3978
|
|
3955
|
-
this.instance.PluginHooks.run('afterCreateCol', index, numberOfCreatedCols);
|
3979
|
+
this.instance.PluginHooks.run('afterCreateCol', index, numberOfCreatedCols, createdAutomatically);
|
3956
3980
|
this.instance.forceFullRender = true; //used when data was changed
|
3957
3981
|
|
3958
3982
|
return numberOfCreatedCols;
|
@@ -4127,7 +4151,7 @@ Handsontable.SelectionPoint.prototype.arr = function (arr) {
|
|
4127
4151
|
}
|
4128
4152
|
};
|
4129
4153
|
|
4130
|
-
var copyableLookup = Handsontable.helper.cellMethodLookupFactory('copyable');
|
4154
|
+
var copyableLookup = Handsontable.helper.cellMethodLookupFactory('copyable', false);
|
4131
4155
|
|
4132
4156
|
/**
|
4133
4157
|
* Returns single value from the data array (intended for clipboard copy to an external application)
|
@@ -5069,8 +5093,8 @@ Handsontable.SelectionPoint.prototype.arr = function (arr) {
|
|
5069
5093
|
showButtonPanel: true,
|
5070
5094
|
changeMonth: true,
|
5071
5095
|
changeYear: true,
|
5072
|
-
|
5073
|
-
|
5096
|
+
onSelect: function (dateStr) {
|
5097
|
+
that.setValue(dateStr);
|
5074
5098
|
that.finishEditing(false);
|
5075
5099
|
}
|
5076
5100
|
};
|
@@ -5360,10 +5384,13 @@ Handsontable.SelectionPoint.prototype.arr = function (arr) {
|
|
5360
5384
|
|
5361
5385
|
hot.updateSettings({
|
5362
5386
|
'colWidths': [this.wtDom.outerWidth(this.TEXTAREA) - 2],
|
5363
|
-
afterRenderer: function (TD, row, col, prop, value
|
5364
|
-
var
|
5365
|
-
|
5366
|
-
|
5387
|
+
afterRenderer: function (TD, row, col, prop, value) {
|
5388
|
+
var caseSensitive = this.getCellMeta(row, col).filteringCaseSensitive === true;
|
5389
|
+
var indexOfMatch = caseSensitive ? value.indexOf(that.query) : value.toLowerCase().indexOf(that.query.toLowerCase());
|
5390
|
+
|
5391
|
+
if(indexOfMatch != -1){
|
5392
|
+
var match = value.substr(indexOfMatch, that.query.length);
|
5393
|
+
TD.innerHTML = value.replace(match, '<strong>' + match + '</strong>');
|
5367
5394
|
}
|
5368
5395
|
}
|
5369
5396
|
});
|
@@ -5430,10 +5457,17 @@ Handsontable.SelectionPoint.prototype.arr = function (arr) {
|
|
5430
5457
|
choices = this.cellProperties.source;
|
5431
5458
|
} else {
|
5432
5459
|
|
5433
|
-
var
|
5460
|
+
var filteringCaseSensitive = this.cellProperties.filteringCaseSensitive === true;
|
5461
|
+
var lowerCaseQuery = query.toLowerCase();
|
5434
5462
|
|
5435
5463
|
choices = this.cellProperties.source.filter(function(choice){
|
5436
|
-
|
5464
|
+
|
5465
|
+
if (filteringCaseSensitive) {
|
5466
|
+
return choice.indexOf(query) != -1;
|
5467
|
+
} else {
|
5468
|
+
return choice.toLowerCase().indexOf(lowerCaseQuery) != -1;
|
5469
|
+
}
|
5470
|
+
|
5437
5471
|
});
|
5438
5472
|
}
|
5439
5473
|
|
@@ -5492,7 +5526,7 @@ Handsontable.SelectionPoint.prototype.arr = function (arr) {
|
|
5492
5526
|
|
5493
5527
|
rowToHighlight = findItemIndexToHighlight(choices, value);
|
5494
5528
|
|
5495
|
-
if ( typeof rowToHighlight == 'undefined'){
|
5529
|
+
if ( typeof rowToHighlight == 'undefined' && this.cellProperties.allowInvalid === false){
|
5496
5530
|
rowToHighlight = 0;
|
5497
5531
|
}
|
5498
5532
|
|
@@ -6920,26 +6954,26 @@ Handsontable.PluginHookClass = (function () {
|
|
6920
6954
|
}
|
6921
6955
|
|
6922
6956
|
PluginHookClass.prototype.add = function (key, fn) {
|
6923
|
-
//
|
6924
|
-
if (key in legacy) {
|
6925
|
-
key = legacy[key];
|
6926
|
-
}
|
6927
|
-
|
6928
|
-
if (typeof this.hooks[key] === "undefined") {
|
6929
|
-
this.hooks[key] = [];
|
6930
|
-
}
|
6931
|
-
|
6957
|
+
//if fn is array, run this for all the array items
|
6932
6958
|
if (Handsontable.helper.isArray(fn)) {
|
6933
6959
|
for (var i = 0, len = fn.length; i < len; i++) {
|
6934
|
-
this.
|
6935
|
-
}
|
6936
|
-
} else {
|
6937
|
-
if (this.hooks[key].indexOf(fn) > -1) {
|
6938
|
-
throw new Error("Seems that you are trying to set the same plugin hook twice (" + key + ", " + fn + ")"); //error here should help writing bug-free plugins
|
6960
|
+
this.add(key, fn[i]);
|
6939
6961
|
}
|
6940
|
-
this.hooks[key].push(fn);
|
6941
6962
|
}
|
6963
|
+
else {
|
6964
|
+
// provide support for old versions of HOT
|
6965
|
+
if (key in legacy) {
|
6966
|
+
key = legacy[key];
|
6967
|
+
}
|
6968
|
+
|
6969
|
+
if (typeof this.hooks[key] === "undefined") {
|
6970
|
+
this.hooks[key] = [];
|
6971
|
+
}
|
6942
6972
|
|
6973
|
+
if (this.hooks[key].indexOf(fn) == -1) {
|
6974
|
+
this.hooks[key].push(fn); //only add a hook if it has not already be added (adding the same hook twice is now silently ignored)
|
6975
|
+
}
|
6976
|
+
}
|
6943
6977
|
return this;
|
6944
6978
|
};
|
6945
6979
|
|
@@ -8908,7 +8942,12 @@ function Storage(prefix) {
|
|
8908
8942
|
}
|
8909
8943
|
});
|
8910
8944
|
|
8911
|
-
instance.addHook("afterCreateRow", function (index, amount) {
|
8945
|
+
instance.addHook("afterCreateRow", function (index, amount, createdAutomatically) {
|
8946
|
+
|
8947
|
+
if (createdAutomatically) {
|
8948
|
+
return;
|
8949
|
+
}
|
8950
|
+
|
8912
8951
|
var action = new Handsontable.UndoRedo.CreateRowAction(index, amount);
|
8913
8952
|
plugin.done(action);
|
8914
8953
|
});
|
@@ -8921,7 +8960,12 @@ function Storage(prefix) {
|
|
8921
8960
|
plugin.done(action);
|
8922
8961
|
});
|
8923
8962
|
|
8924
|
-
instance.addHook("afterCreateCol", function (index, amount) {
|
8963
|
+
instance.addHook("afterCreateCol", function (index, amount, createdAutomatically) {
|
8964
|
+
|
8965
|
+
if (createdAutomatically) {
|
8966
|
+
return;
|
8967
|
+
}
|
8968
|
+
|
8925
8969
|
var action = new Handsontable.UndoRedo.CreateColumnAction(index, amount);
|
8926
8970
|
plugin.done(action);
|
8927
8971
|
});
|
@@ -1,12 +1,12 @@
|
|
1
1
|
/**
|
2
|
-
* Handsontable 0.10.
|
2
|
+
* Handsontable 0.10.3
|
3
3
|
* Handsontable is a simple jQuery plugin for editable tables with basic copy-paste compatibility with Excel and Google Docs
|
4
4
|
*
|
5
5
|
* Copyright 2012, Marcin Warpechowski
|
6
6
|
* Licensed under the MIT license.
|
7
7
|
* http://handsontable.com/
|
8
8
|
*
|
9
|
-
* Date:
|
9
|
+
* Date: Mon Feb 10 2014 14:15:11 GMT+0100 (CET)
|
10
10
|
*/
|
11
11
|
/*jslint white: true, browser: true, plusplus: true, indent: 4, maxerr: 50 */
|
12
12
|
|
@@ -329,14 +329,14 @@ Handsontable.Core = function (rootElement, userSettings) {
|
|
329
329
|
rlen = instance.countRows();
|
330
330
|
if (rlen < priv.settings.minRows) {
|
331
331
|
for (r = 0; r < priv.settings.minRows - rlen; r++) {
|
332
|
-
datamap.createRow();
|
332
|
+
datamap.createRow(instance.countRows(), 1, true);
|
333
333
|
}
|
334
334
|
}
|
335
335
|
|
336
336
|
//should I add empty rows to meet minSpareRows?
|
337
337
|
if (emptyRows < priv.settings.minSpareRows) {
|
338
338
|
for (; emptyRows < priv.settings.minSpareRows && instance.countRows() < priv.settings.maxRows; emptyRows++) {
|
339
|
-
datamap.createRow();
|
339
|
+
datamap.createRow(instance.countRows(), 1, true);
|
340
340
|
}
|
341
341
|
}
|
342
342
|
|
@@ -346,14 +346,14 @@ Handsontable.Core = function (rootElement, userSettings) {
|
|
346
346
|
//should I add empty cols to meet minCols?
|
347
347
|
if (!priv.settings.columns && instance.countCols() < priv.settings.minCols) {
|
348
348
|
for (; instance.countCols() < priv.settings.minCols; emptyCols++) {
|
349
|
-
datamap.createCol();
|
349
|
+
datamap.createCol(instance.countCols(), 1, true);
|
350
350
|
}
|
351
351
|
}
|
352
352
|
|
353
353
|
//should I add empty cols to meet minSpareCols?
|
354
354
|
if (!priv.settings.columns && instance.dataType === 'array' && emptyCols < priv.settings.minSpareCols) {
|
355
355
|
for (; emptyCols < priv.settings.minSpareCols && instance.countCols() < priv.settings.maxCols; emptyCols++) {
|
356
|
-
datamap.createCol();
|
356
|
+
datamap.createCol(instance.countCols(), 1, true);
|
357
357
|
}
|
358
358
|
}
|
359
359
|
|
@@ -2271,7 +2271,7 @@ Handsontable.Core = function (rootElement, userSettings) {
|
|
2271
2271
|
/**
|
2272
2272
|
* Handsontable version
|
2273
2273
|
*/
|
2274
|
-
this.version = '0.10.
|
2274
|
+
this.version = '0.10.3'; //inserted by grunt from package.json
|
2275
2275
|
};
|
2276
2276
|
|
2277
2277
|
var DefaultSettings = function () {};
|
@@ -3635,7 +3635,26 @@ Handsontable.helper.proxy = function (fun, context) {
|
|
3635
3635
|
};
|
3636
3636
|
};
|
3637
3637
|
|
3638
|
-
|
3638
|
+
/**
|
3639
|
+
* Factory that produces a function for searching methods (or any properties) which could be defined directly in
|
3640
|
+
* table configuration or implicitly, within cell type definition.
|
3641
|
+
*
|
3642
|
+
* For example: renderer can be defined explicitly using "renderer" property in column configuration or it can be
|
3643
|
+
* defined implicitly using "type" property.
|
3644
|
+
*
|
3645
|
+
* Methods/properties defined explicitly always takes precedence over those defined through "type".
|
3646
|
+
*
|
3647
|
+
* If the method/property is not found in an object, searching is continued recursively through prototype chain, until
|
3648
|
+
* it reaches the Object.prototype.
|
3649
|
+
*
|
3650
|
+
*
|
3651
|
+
* @param methodName {String} name of the method/property to search (i.e. 'renderer', 'validator', 'copyable')
|
3652
|
+
* @param allowUndefined {Boolean} [optional] if false, the search is continued if methodName has not been found in cell "type"
|
3653
|
+
* @returns {Function}
|
3654
|
+
*/
|
3655
|
+
Handsontable.helper.cellMethodLookupFactory = function (methodName, allowUndefined) {
|
3656
|
+
|
3657
|
+
allowUndefined = typeof allowUndefined == 'undefined' ? true : allowUndefined;
|
3639
3658
|
|
3640
3659
|
return function cellMethodLookup (row, col) {
|
3641
3660
|
|
@@ -3660,7 +3679,12 @@ Handsontable.helper.cellMethodLookupFactory = function (methodName) {
|
|
3660
3679
|
|
3661
3680
|
type = translateTypeNameToObject(properties.type);
|
3662
3681
|
|
3663
|
-
|
3682
|
+
if (type.hasOwnProperty(methodName)) {
|
3683
|
+
return type[methodName]; //method defined in type.
|
3684
|
+
} else if (allowUndefined) {
|
3685
|
+
return; //method does not defined in type (eg. validator), returns undefined
|
3686
|
+
}
|
3687
|
+
|
3664
3688
|
}
|
3665
3689
|
|
3666
3690
|
return getMethodFromProperties(Handsontable.helper.getPrototypeOf(properties));
|
@@ -3855,7 +3879,7 @@ Handsontable.SelectionPoint.prototype.arr = function (arr) {
|
|
3855
3879
|
* Creates row at the bottom of the data array
|
3856
3880
|
* @param {Number} [index] Optional. Index of the row before which the new row will be inserted
|
3857
3881
|
*/
|
3858
|
-
Handsontable.DataMap.prototype.createRow = function (index, amount) {
|
3882
|
+
Handsontable.DataMap.prototype.createRow = function (index, amount, createdAutomatically) {
|
3859
3883
|
var row
|
3860
3884
|
, colCount = this.instance.countCols()
|
3861
3885
|
, numberOfCreatedRows = 0
|
@@ -3898,7 +3922,7 @@ Handsontable.SelectionPoint.prototype.arr = function (arr) {
|
|
3898
3922
|
}
|
3899
3923
|
|
3900
3924
|
|
3901
|
-
this.instance.PluginHooks.run('afterCreateRow', index, numberOfCreatedRows);
|
3925
|
+
this.instance.PluginHooks.run('afterCreateRow', index, numberOfCreatedRows, createdAutomatically);
|
3902
3926
|
this.instance.forceFullRender = true; //used when data was changed
|
3903
3927
|
|
3904
3928
|
return numberOfCreatedRows;
|
@@ -3909,7 +3933,7 @@ Handsontable.SelectionPoint.prototype.arr = function (arr) {
|
|
3909
3933
|
* @param {Number} [index] Optional. Index of the column before which the new column will be inserted
|
3910
3934
|
* * @param {Number} [amount] Optional.
|
3911
3935
|
*/
|
3912
|
-
Handsontable.DataMap.prototype.createCol = function (index, amount) {
|
3936
|
+
Handsontable.DataMap.prototype.createCol = function (index, amount, createdAutomatically) {
|
3913
3937
|
if (this.instance.dataType === 'object' || this.instance.getSettings().columns) {
|
3914
3938
|
throw new Error("Cannot create new column. When data source in an object, " +
|
3915
3939
|
"you can only have as much columns as defined in first data row, data schema or in the 'columns' setting." +
|
@@ -3952,7 +3976,7 @@ Handsontable.SelectionPoint.prototype.arr = function (arr) {
|
|
3952
3976
|
currentIndex++;
|
3953
3977
|
}
|
3954
3978
|
|
3955
|
-
this.instance.PluginHooks.run('afterCreateCol', index, numberOfCreatedCols);
|
3979
|
+
this.instance.PluginHooks.run('afterCreateCol', index, numberOfCreatedCols, createdAutomatically);
|
3956
3980
|
this.instance.forceFullRender = true; //used when data was changed
|
3957
3981
|
|
3958
3982
|
return numberOfCreatedCols;
|
@@ -4127,7 +4151,7 @@ Handsontable.SelectionPoint.prototype.arr = function (arr) {
|
|
4127
4151
|
}
|
4128
4152
|
};
|
4129
4153
|
|
4130
|
-
var copyableLookup = Handsontable.helper.cellMethodLookupFactory('copyable');
|
4154
|
+
var copyableLookup = Handsontable.helper.cellMethodLookupFactory('copyable', false);
|
4131
4155
|
|
4132
4156
|
/**
|
4133
4157
|
* Returns single value from the data array (intended for clipboard copy to an external application)
|
@@ -5069,8 +5093,8 @@ Handsontable.SelectionPoint.prototype.arr = function (arr) {
|
|
5069
5093
|
showButtonPanel: true,
|
5070
5094
|
changeMonth: true,
|
5071
5095
|
changeYear: true,
|
5072
|
-
|
5073
|
-
|
5096
|
+
onSelect: function (dateStr) {
|
5097
|
+
that.setValue(dateStr);
|
5074
5098
|
that.finishEditing(false);
|
5075
5099
|
}
|
5076
5100
|
};
|
@@ -5360,10 +5384,13 @@ Handsontable.SelectionPoint.prototype.arr = function (arr) {
|
|
5360
5384
|
|
5361
5385
|
hot.updateSettings({
|
5362
5386
|
'colWidths': [this.wtDom.outerWidth(this.TEXTAREA) - 2],
|
5363
|
-
afterRenderer: function (TD, row, col, prop, value
|
5364
|
-
var
|
5365
|
-
|
5366
|
-
|
5387
|
+
afterRenderer: function (TD, row, col, prop, value) {
|
5388
|
+
var caseSensitive = this.getCellMeta(row, col).filteringCaseSensitive === true;
|
5389
|
+
var indexOfMatch = caseSensitive ? value.indexOf(that.query) : value.toLowerCase().indexOf(that.query.toLowerCase());
|
5390
|
+
|
5391
|
+
if(indexOfMatch != -1){
|
5392
|
+
var match = value.substr(indexOfMatch, that.query.length);
|
5393
|
+
TD.innerHTML = value.replace(match, '<strong>' + match + '</strong>');
|
5367
5394
|
}
|
5368
5395
|
}
|
5369
5396
|
});
|
@@ -5430,10 +5457,17 @@ Handsontable.SelectionPoint.prototype.arr = function (arr) {
|
|
5430
5457
|
choices = this.cellProperties.source;
|
5431
5458
|
} else {
|
5432
5459
|
|
5433
|
-
var
|
5460
|
+
var filteringCaseSensitive = this.cellProperties.filteringCaseSensitive === true;
|
5461
|
+
var lowerCaseQuery = query.toLowerCase();
|
5434
5462
|
|
5435
5463
|
choices = this.cellProperties.source.filter(function(choice){
|
5436
|
-
|
5464
|
+
|
5465
|
+
if (filteringCaseSensitive) {
|
5466
|
+
return choice.indexOf(query) != -1;
|
5467
|
+
} else {
|
5468
|
+
return choice.toLowerCase().indexOf(lowerCaseQuery) != -1;
|
5469
|
+
}
|
5470
|
+
|
5437
5471
|
});
|
5438
5472
|
}
|
5439
5473
|
|
@@ -5492,7 +5526,7 @@ Handsontable.SelectionPoint.prototype.arr = function (arr) {
|
|
5492
5526
|
|
5493
5527
|
rowToHighlight = findItemIndexToHighlight(choices, value);
|
5494
5528
|
|
5495
|
-
if ( typeof rowToHighlight == 'undefined'){
|
5529
|
+
if ( typeof rowToHighlight == 'undefined' && this.cellProperties.allowInvalid === false){
|
5496
5530
|
rowToHighlight = 0;
|
5497
5531
|
}
|
5498
5532
|
|
@@ -6920,26 +6954,26 @@ Handsontable.PluginHookClass = (function () {
|
|
6920
6954
|
}
|
6921
6955
|
|
6922
6956
|
PluginHookClass.prototype.add = function (key, fn) {
|
6923
|
-
//
|
6924
|
-
if (key in legacy) {
|
6925
|
-
key = legacy[key];
|
6926
|
-
}
|
6927
|
-
|
6928
|
-
if (typeof this.hooks[key] === "undefined") {
|
6929
|
-
this.hooks[key] = [];
|
6930
|
-
}
|
6931
|
-
|
6957
|
+
//if fn is array, run this for all the array items
|
6932
6958
|
if (Handsontable.helper.isArray(fn)) {
|
6933
6959
|
for (var i = 0, len = fn.length; i < len; i++) {
|
6934
|
-
this.
|
6935
|
-
}
|
6936
|
-
} else {
|
6937
|
-
if (this.hooks[key].indexOf(fn) > -1) {
|
6938
|
-
throw new Error("Seems that you are trying to set the same plugin hook twice (" + key + ", " + fn + ")"); //error here should help writing bug-free plugins
|
6960
|
+
this.add(key, fn[i]);
|
6939
6961
|
}
|
6940
|
-
this.hooks[key].push(fn);
|
6941
6962
|
}
|
6963
|
+
else {
|
6964
|
+
// provide support for old versions of HOT
|
6965
|
+
if (key in legacy) {
|
6966
|
+
key = legacy[key];
|
6967
|
+
}
|
6968
|
+
|
6969
|
+
if (typeof this.hooks[key] === "undefined") {
|
6970
|
+
this.hooks[key] = [];
|
6971
|
+
}
|
6942
6972
|
|
6973
|
+
if (this.hooks[key].indexOf(fn) == -1) {
|
6974
|
+
this.hooks[key].push(fn); //only add a hook if it has not already be added (adding the same hook twice is now silently ignored)
|
6975
|
+
}
|
6976
|
+
}
|
6943
6977
|
return this;
|
6944
6978
|
};
|
6945
6979
|
|
@@ -8908,7 +8942,12 @@ function Storage(prefix) {
|
|
8908
8942
|
}
|
8909
8943
|
});
|
8910
8944
|
|
8911
|
-
instance.addHook("afterCreateRow", function (index, amount) {
|
8945
|
+
instance.addHook("afterCreateRow", function (index, amount, createdAutomatically) {
|
8946
|
+
|
8947
|
+
if (createdAutomatically) {
|
8948
|
+
return;
|
8949
|
+
}
|
8950
|
+
|
8912
8951
|
var action = new Handsontable.UndoRedo.CreateRowAction(index, amount);
|
8913
8952
|
plugin.done(action);
|
8914
8953
|
});
|
@@ -8921,7 +8960,12 @@ function Storage(prefix) {
|
|
8921
8960
|
plugin.done(action);
|
8922
8961
|
});
|
8923
8962
|
|
8924
|
-
instance.addHook("afterCreateCol", function (index, amount) {
|
8963
|
+
instance.addHook("afterCreateCol", function (index, amount, createdAutomatically) {
|
8964
|
+
|
8965
|
+
if (createdAutomatically) {
|
8966
|
+
return;
|
8967
|
+
}
|
8968
|
+
|
8925
8969
|
var action = new Handsontable.UndoRedo.CreateColumnAction(index, amount);
|
8926
8970
|
plugin.done(action);
|
8927
8971
|
});
|
@@ -1,12 +1,12 @@
|
|
1
1
|
/**
|
2
|
-
* Handsontable 0.10.
|
2
|
+
* Handsontable 0.10.3
|
3
3
|
* Handsontable is a simple jQuery plugin for editable tables with basic copy-paste compatibility with Excel and Google Docs
|
4
4
|
*
|
5
5
|
* Copyright 2012, Marcin Warpechowski
|
6
6
|
* Licensed under the MIT license.
|
7
7
|
* http://handsontable.com/
|
8
8
|
*
|
9
|
-
* Date:
|
9
|
+
* Date: Mon Feb 10 2014 14:15:11 GMT+0100 (CET)
|
10
10
|
*/
|
11
11
|
|
12
12
|
.handsontable {
|
@@ -1,12 +1,12 @@
|
|
1
1
|
/**
|
2
|
-
* Handsontable 0.10.
|
2
|
+
* Handsontable 0.10.3
|
3
3
|
* Handsontable is a simple jQuery plugin for editable tables with basic copy-paste compatibility with Excel and Google Docs
|
4
4
|
*
|
5
5
|
* Copyright 2012, Marcin Warpechowski
|
6
6
|
* Licensed under the MIT license.
|
7
7
|
* http://handsontable.com/
|
8
8
|
*
|
9
|
-
* Date:
|
9
|
+
* Date: Mon Feb 10 2014 14:15:11 GMT+0100 (CET)
|
10
10
|
*/
|
11
11
|
|
12
12
|
.handsontable {
|