gridx-rails 1.1.0 → 1.2.1
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.
- checksums.yaml +8 -8
- data/README.md +3 -3
- data/app/assets/javascripts/gridx/Grid.js +3 -2
- data/app/assets/javascripts/gridx/core/model/cache/_Cache.js +25 -8
- data/app/assets/javascripts/gridx/modules/Bar.js +1 -2
- data/app/assets/javascripts/gridx/modules/Body.js +15 -7
- data/app/assets/javascripts/gridx/modules/CellWidget.js +8 -4
- data/app/assets/javascripts/gridx/modules/ColumnLock.js +12 -12
- data/app/assets/javascripts/gridx/modules/ColumnResizer.js +9 -10
- data/app/assets/javascripts/gridx/modules/Dod.js +1 -0
- data/app/assets/javascripts/gridx/modules/Edit.js +18 -15
- data/app/assets/javascripts/gridx/modules/Filter.js +7 -3
- data/app/assets/javascripts/gridx/modules/Focus.js +45 -36
- data/app/assets/javascripts/gridx/modules/GroupHeader.js +2 -1
- data/app/assets/javascripts/gridx/modules/HLayout.js +1 -0
- data/app/assets/javascripts/gridx/modules/HScroller.js +1 -0
- data/app/assets/javascripts/gridx/modules/Header.js +8 -1
- data/app/assets/javascripts/gridx/modules/HeaderMenu.js +1 -0
- data/app/assets/javascripts/gridx/modules/HeaderRegions.js +2 -1
- data/app/assets/javascripts/gridx/modules/IndirectSelect.js +7 -34
- data/app/assets/javascripts/gridx/modules/IndirectSelectColumn.js +4 -13
- data/app/assets/javascripts/gridx/modules/Menu.js +5 -1
- data/app/assets/javascripts/gridx/modules/NavigableCell.js +3 -1
- data/app/assets/javascripts/gridx/modules/NestedSort.js +4 -1
- data/app/assets/javascripts/gridx/modules/Pagination.js +1 -0
- data/app/assets/javascripts/gridx/modules/Persist.js +1 -0
- data/app/assets/javascripts/gridx/modules/RowHeader.js +11 -10
- data/app/assets/javascripts/gridx/modules/SingleSort.js +1 -0
- data/app/assets/javascripts/gridx/modules/SummaryBar.js +1 -0
- data/app/assets/javascripts/gridx/modules/ToolBar.js +3 -0
- data/app/assets/javascripts/gridx/modules/TouchScroll.js +1 -0
- data/app/assets/javascripts/gridx/modules/TouchVScroller.js +28 -5
- data/app/assets/javascripts/gridx/modules/Traverse.js +1 -0
- data/app/assets/javascripts/gridx/modules/Tree.js +2 -1
- data/app/assets/javascripts/gridx/modules/VLayout.js +1 -0
- data/app/assets/javascripts/gridx/modules/VScroller.js +22 -11
- data/app/assets/javascripts/gridx/modules/View.js +11 -6
- data/app/assets/javascripts/gridx/modules/VirtualVScroller.js +8 -4
- data/app/assets/javascripts/gridx/modules/dnd/Column.js +3 -4
- data/app/assets/javascripts/gridx/modules/dnd/Row.js +3 -4
- data/app/assets/javascripts/gridx/modules/dnd/_Dnd.js +1 -0
- data/app/assets/javascripts/gridx/modules/extendedSelect/Cell.js +4 -3
- data/app/assets/javascripts/gridx/modules/extendedSelect/Column.js +6 -7
- data/app/assets/javascripts/gridx/modules/extendedSelect/Row.js +33 -15
- data/app/assets/javascripts/gridx/modules/filter/FilterBar.js +9 -7
- data/app/assets/javascripts/gridx/modules/filter/FilterDialog.js +1 -1
- data/app/assets/javascripts/gridx/modules/filter/FilterPane.js +1 -1
- data/app/assets/javascripts/gridx/modules/filter/QuickFilter.js +1 -0
- data/app/assets/javascripts/gridx/modules/move/Column.js +2 -1
- data/app/assets/javascripts/gridx/modules/move/Row.js +2 -1
- data/app/assets/javascripts/gridx/modules/pagination/PaginationBar.js +1 -0
- data/app/assets/javascripts/gridx/modules/pagination/PaginationBarDD.js +2 -0
- data/app/assets/javascripts/gridx/modules/select/Cell.js +10 -7
- data/app/assets/javascripts/gridx/modules/select/Column.js +3 -2
- data/app/assets/javascripts/gridx/modules/select/Row.js +27 -13
- data/app/assets/javascripts/gridx/support/QuickFilter.js +7 -2
- data/lib/gridx-rails/version.rb +1 -1
- data/test/dummy/log/test.log +5 -0
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
!binary "U0hBMQ==":
|
|
3
3
|
metadata.gz: !binary |-
|
|
4
|
-
|
|
4
|
+
NzkzMDJiMGUwN2VhZWYwYTE0NzVhMzQ1YWEzY2I0ZDlhNzBjYWEyNQ==
|
|
5
5
|
data.tar.gz: !binary |-
|
|
6
|
-
|
|
6
|
+
NzVkMzJmMzkwMjcxOGFjMzg1ZTAyNjgwYzQ3ZWJlZWY5ZDc2OTY5Zg==
|
|
7
7
|
!binary "U0hBNTEy":
|
|
8
8
|
metadata.gz: !binary |-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
ZjhiNjRiMDZlYjZhODFiMGZiMTJiMDc0ODgwZmIxNWI0NjNlNmVmZDRiYTQw
|
|
10
|
+
ZTdlMDFjZmFmYjZlZmM0YjgzMGJhMGQzNjJlMzI4OWUwNGEzNmZkMzBjMTg3
|
|
11
|
+
NTNiYzU4NjQxN2M2MDdmYzYwNDVlZTdhYTEyN2U4OTU4ZTk3ZjY=
|
|
12
12
|
data.tar.gz: !binary |-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
MDk4NWE1ZmU2YjM2ZWM0ZjQ4ZDcwYzY0MTM0ZWNkZTYyOTU1NGYzMGQyZWE0
|
|
14
|
+
OTI2NzlkNjAyODQ2ZmVkMjU2NjcyZDY3ZWZkNDA4YzBiMWVhYWMzMzMzMzBi
|
|
15
|
+
YTM0ZDgwNmJkYTY5ZmRjNmI3ODE5YmIwN2U4NzNlY2VjNmU3ZTk=
|
data/README.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# gridx-rails
|
|
2
2
|
|
|
3
|
-
This gem
|
|
3
|
+
This gem prepares [GridX](http://oria.github.io/gridx/) assets (JavaScripts, stylesheets,
|
|
4
4
|
templates and and images) for the Rails 3.1+ [asset
|
|
5
5
|
pipeline](http://guides.rubyonrails.org/asset_pipeline.html).
|
|
6
6
|
|
|
7
7
|
GridX is designed to load modules using Dojo AMD, so the files are not
|
|
8
|
-
packaged together in the typical asset pipeline style,
|
|
9
|
-
|
|
8
|
+
packaged together in a single file, in the typical asset pipeline style,
|
|
9
|
+
they are instead precompiled separately.
|
|
10
10
|
|
|
11
11
|
## Usage
|
|
12
12
|
|
|
@@ -180,7 +180,8 @@ define([
|
|
|
180
180
|
_compNames: ['Cell', 'HeaderCell', 'Row', 'Header'],
|
|
181
181
|
|
|
182
182
|
_eventNames: [
|
|
183
|
-
'
|
|
183
|
+
'TouchStart', 'TouchEnd',
|
|
184
|
+
'Click', 'DblClick',
|
|
184
185
|
'MouseDown', 'MouseUp',
|
|
185
186
|
'MouseOver', 'MouseOut',
|
|
186
187
|
'MouseMove', 'ContextMenu',
|
|
@@ -214,7 +215,7 @@ define([
|
|
|
214
215
|
},
|
|
215
216
|
//event handling end
|
|
216
217
|
|
|
217
|
-
|
|
218
|
+
_isCtrlKey: function(evt){
|
|
218
219
|
// summary:
|
|
219
220
|
// On Mac Ctrl+click also opens a context menu. So call this to check ctrlKey instead of directly call evt.ctrlKey
|
|
220
221
|
// if you need to implement some handler for Ctrl+click.
|
|
@@ -68,6 +68,7 @@ define([
|
|
|
68
68
|
//virtual root node, with id ''.
|
|
69
69
|
t._struct[''] = [];
|
|
70
70
|
t._size[''] = -1;
|
|
71
|
+
t.totalSize = undefined;
|
|
71
72
|
},
|
|
72
73
|
|
|
73
74
|
byIndex: function(index, parentId){
|
|
@@ -163,7 +164,7 @@ define([
|
|
|
163
164
|
c = t._cache[id];
|
|
164
165
|
for(colId in columns){
|
|
165
166
|
col = columns[colId];
|
|
166
|
-
c.data[colId] = t._formatCell(
|
|
167
|
+
c.data[colId] = t._formatCell(c.rawData, id, col.id);
|
|
167
168
|
}
|
|
168
169
|
}
|
|
169
170
|
},
|
|
@@ -181,15 +182,15 @@ define([
|
|
|
181
182
|
return item;
|
|
182
183
|
},
|
|
183
184
|
|
|
184
|
-
_formatCell: function(
|
|
185
|
+
_formatCell: function(rawData, rowId, colId){
|
|
185
186
|
var col = this.columns[colId];
|
|
186
|
-
return col.formatter ? col.formatter(rawData) : rawData[col.field || colId];
|
|
187
|
+
return col.formatter ? col.formatter(rawData, rowId) : rawData[col.field || colId];
|
|
187
188
|
},
|
|
188
189
|
|
|
189
|
-
_formatRow: function(rowData){
|
|
190
|
+
_formatRow: function(rowData, rowId){
|
|
190
191
|
var cols = this.columns, res = {}, colId;
|
|
191
192
|
for(colId in cols){
|
|
192
|
-
res[colId] = this._formatCell(
|
|
193
|
+
res[colId] = this._formatCell(rowData, rowId, colId);
|
|
193
194
|
}
|
|
194
195
|
return res;
|
|
195
196
|
},
|
|
@@ -218,7 +219,7 @@ define([
|
|
|
218
219
|
pr.push(id);
|
|
219
220
|
}
|
|
220
221
|
t._cache[id] = {
|
|
221
|
-
data: t._formatRow(rowData),
|
|
222
|
+
data: t._formatRow(rowData, id),
|
|
222
223
|
rawData: rowData,
|
|
223
224
|
item: item
|
|
224
225
|
};
|
|
@@ -244,6 +245,15 @@ define([
|
|
|
244
245
|
t._size[parentId] = parseInt(size, 10);
|
|
245
246
|
}
|
|
246
247
|
function onComplete(items){
|
|
248
|
+
//FIXME: store does not support getting total size after filter/query, so we must change the protocal a little.
|
|
249
|
+
if(items.ioArgs && items.ioArgs.xhr){
|
|
250
|
+
var range = results.ioArgs.xhr.getResponseHeader("Content-Range");
|
|
251
|
+
if(range && (range = range.match(/(.+)\//))){
|
|
252
|
+
t.totalSize = +range[1];
|
|
253
|
+
}else{
|
|
254
|
+
t.totalSize = undefined;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
247
257
|
try{
|
|
248
258
|
var start = options.start || 0,
|
|
249
259
|
i = 0,
|
|
@@ -308,15 +318,19 @@ define([
|
|
|
308
318
|
row = t._itemToObject(item),
|
|
309
319
|
parentItem = parentInfo && parentInfo[s.fetch ? 'item' : 'parent'],
|
|
310
320
|
parentId = parentItem ? s.getIdentity(parentItem) : '',
|
|
321
|
+
id = s.getIdentity(item),
|
|
311
322
|
size = t._size[''];
|
|
312
323
|
t.clear();
|
|
313
|
-
t.onNew(
|
|
314
|
-
data: t._formatRow(row),
|
|
324
|
+
t.onNew(id, 0, {
|
|
325
|
+
data: t._formatRow(row, id),
|
|
315
326
|
rawData: row,
|
|
316
327
|
item: item
|
|
317
328
|
});
|
|
318
329
|
if(!parentItem && size >= 0){
|
|
319
330
|
t._size[''] = size + 1;
|
|
331
|
+
if(t.totalSize >= 0){
|
|
332
|
+
t.totalSize = size + 1;
|
|
333
|
+
}
|
|
320
334
|
t.model._onSizeChange();
|
|
321
335
|
}
|
|
322
336
|
},
|
|
@@ -359,6 +373,9 @@ define([
|
|
|
359
373
|
t.onDelete(id, index - 1, path);
|
|
360
374
|
if(!parentId && size >= 0){
|
|
361
375
|
sz[''] = size - 1;
|
|
376
|
+
if(t.totalSize >= 0){
|
|
377
|
+
t.totalSize = size - 1;
|
|
378
|
+
}
|
|
362
379
|
t.model._onSizeChange();
|
|
363
380
|
}
|
|
364
381
|
}else{
|
|
@@ -11,9 +11,8 @@ define([
|
|
|
11
11
|
|
|
12
12
|
/*=====
|
|
13
13
|
var Bar = declare(_Module, {
|
|
14
|
-
// module:
|
|
15
|
-
// gridx/modules/Bar
|
|
16
14
|
// summary:
|
|
15
|
+
// module name: bar.
|
|
17
16
|
// This is a general-purpose bar for gridx.
|
|
18
17
|
// description:
|
|
19
18
|
// This module can be configured to hold various plugins, such as pager, pageSizer, gotoPageButton, summary, quickFilter, toobar, etc.
|
|
@@ -43,6 +43,7 @@ define([
|
|
|
43
43
|
|
|
44
44
|
var Body = declare(_Module, {
|
|
45
45
|
// summary:
|
|
46
|
+
// module name: body.
|
|
46
47
|
// The body UI of grid.
|
|
47
48
|
// description:
|
|
48
49
|
// This module is in charge of row rendering. It should be compatible with virtual/non-virtual scroll,
|
|
@@ -250,7 +251,7 @@ define([
|
|
|
250
251
|
query('> .gridxRowOver', t.domNode).removeClass('gridxRowOver');
|
|
251
252
|
}
|
|
252
253
|
});
|
|
253
|
-
t.aspect(g, 'setStore', function(){
|
|
254
|
+
t.aspect(g.model, 'setStore', function(){
|
|
254
255
|
t.refresh();
|
|
255
256
|
});
|
|
256
257
|
},
|
|
@@ -544,7 +545,10 @@ define([
|
|
|
544
545
|
var scrollTop = isRefresh ? n.scrollTop : 0;
|
|
545
546
|
n.scrollTop = 0;
|
|
546
547
|
//unrender before destroy nodes, so that other modules have a chance to detach nodes.
|
|
547
|
-
t.
|
|
548
|
+
if(!t._skipUnrender){
|
|
549
|
+
//only when we do have something to unrender
|
|
550
|
+
t.onUnrender();
|
|
551
|
+
}
|
|
548
552
|
n.innerHTML = str;
|
|
549
553
|
if(scrollTop){
|
|
550
554
|
n.scrollTop = scrollTop;
|
|
@@ -565,7 +569,10 @@ define([
|
|
|
565
569
|
}else if(!{top: 1, bottom: 1}[position]){
|
|
566
570
|
n.scrollTop = 0;
|
|
567
571
|
//unrender before destroy nodes, so that other modules have a chance to detach nodes.
|
|
568
|
-
t.
|
|
572
|
+
if(!t._skipUnrender){
|
|
573
|
+
//only when we do have something to unrender
|
|
574
|
+
t.onUnrender();
|
|
575
|
+
}
|
|
569
576
|
n.innerHTML = '';
|
|
570
577
|
en.innerHTML = emptyInfo;
|
|
571
578
|
en.style.zIndex = '';
|
|
@@ -919,16 +926,17 @@ define([
|
|
|
919
926
|
});
|
|
920
927
|
t.connect(g.mainNode, 'onkeydown', function(evt){
|
|
921
928
|
if(focus.currentArea() == 'body'){
|
|
922
|
-
var dk = keys
|
|
923
|
-
|
|
929
|
+
var dk = keys,
|
|
930
|
+
ctrlKey = g._isCtrlKey(evt);
|
|
931
|
+
if(evt.keyCode == dk.HOME && !ctrlKey){
|
|
924
932
|
t._focusCellCol = 0;
|
|
925
933
|
t._focusCell();
|
|
926
934
|
focus.stopEvent(evt);
|
|
927
|
-
}else if(evt.keyCode == dk.END && !
|
|
935
|
+
}else if(evt.keyCode == dk.END && !ctrlKey){
|
|
928
936
|
t._focusCellCol = g._columns.length - 1;
|
|
929
937
|
t._focusCell();
|
|
930
938
|
focus.stopEvent(evt);
|
|
931
|
-
}else if(!g.tree || !
|
|
939
|
+
}else if(!g.tree || !ctrlKey){
|
|
932
940
|
focus._noBlur = 1; //1 as true
|
|
933
941
|
var arr = {}, dir = g.isLeftToRight() ? 1 : -1;
|
|
934
942
|
arr[dk.LEFT_ARROW] = [0, -dir, evt];
|
|
@@ -25,6 +25,7 @@ define([
|
|
|
25
25
|
|
|
26
26
|
var CellWidget = declare(_Module, {
|
|
27
27
|
// summary:
|
|
28
|
+
// module name: cellWidget.
|
|
28
29
|
// This module makes it possible to efficiently show widgets within a grid cell.
|
|
29
30
|
// description:
|
|
30
31
|
// Since widget declarations need to be parsed by dojo.parser, it can NOT be directly
|
|
@@ -110,6 +111,8 @@ define([
|
|
|
110
111
|
// CellWidget module reuses widgets in cell, so if there is no widgets in cell, you don't need this module at all.
|
|
111
112
|
widgetsInCell: false,
|
|
112
113
|
|
|
114
|
+
allowEventBubble: false,
|
|
115
|
+
|
|
113
116
|
decorator: function(){
|
|
114
117
|
// summary:
|
|
115
118
|
// This decorator function is slightly different from the one when this module is not used.
|
|
@@ -203,13 +206,14 @@ define([
|
|
|
203
206
|
},
|
|
204
207
|
|
|
205
208
|
postCreate: function(){
|
|
206
|
-
var
|
|
207
|
-
|
|
208
|
-
|
|
209
|
+
var t = this,
|
|
210
|
+
dn = t.domNode;
|
|
211
|
+
t.connect(dn, 'onmousedown', function(e){
|
|
212
|
+
if(e.target != dn && !t.cell.column.allowEventBubble){
|
|
209
213
|
e.cancelBubble = true;
|
|
210
214
|
}
|
|
211
215
|
});
|
|
212
|
-
|
|
216
|
+
t._cellCnnts = [];
|
|
213
217
|
},
|
|
214
218
|
|
|
215
219
|
startup: function(){
|
|
@@ -14,6 +14,7 @@ define([
|
|
|
14
14
|
/*=====
|
|
15
15
|
return declare(_Module, {
|
|
16
16
|
// summary:
|
|
17
|
+
// module name: columnLock.
|
|
17
18
|
// Column lock machinery.
|
|
18
19
|
// description:
|
|
19
20
|
// This module provides a way to lock consecutive leading columns.
|
|
@@ -64,15 +65,16 @@ define([
|
|
|
64
65
|
_this.connect(g.body, 'onAfterRow', function(row){
|
|
65
66
|
_this._lockColumns(row.node());
|
|
66
67
|
});
|
|
67
|
-
|
|
68
|
-
_this.connect(g.header, 'onRender', '_updateHeader');
|
|
69
68
|
_this.connect(g.columnWidth, 'onUpdate', '_updateHeader');
|
|
70
|
-
_this.connect(g, '
|
|
69
|
+
_this.connect(g.header, 'onRender', '_updateHeader');
|
|
71
70
|
if(g.columnResizer){
|
|
72
71
|
//make it compatible with column resizer
|
|
73
72
|
_this.connect(g.columnResizer, 'onResize', '_updateHeader');
|
|
74
73
|
_this.connect(g.columnResizer, 'onResize', '_updateBody');
|
|
75
74
|
}
|
|
75
|
+
|
|
76
|
+
_this.connect(g, '_onResizeEnd', '_updateHeader');
|
|
77
|
+
_this.connect(g, '_onResizeEnd', '_updateBody');
|
|
76
78
|
if(g.header){
|
|
77
79
|
g.header.loaded.then(function(){
|
|
78
80
|
_this._updateHeader();
|
|
@@ -130,6 +132,7 @@ define([
|
|
|
130
132
|
}
|
|
131
133
|
rowNode.style[ltr ? 'paddingLeft' : 'paddingRight'] = '0px';
|
|
132
134
|
rowNode.style.width = 'auto';
|
|
135
|
+
rowNode.firstChild.style.height = 'auto';
|
|
133
136
|
},
|
|
134
137
|
|
|
135
138
|
_updateUI: function(){
|
|
@@ -152,6 +155,7 @@ define([
|
|
|
152
155
|
var isHeader = domClass.contains(rowNode, 'gridxHeaderRowInner');
|
|
153
156
|
var ltr = this.grid.isLeftToRight();
|
|
154
157
|
var r = rowNode.firstChild.rows[0], i;
|
|
158
|
+
rowNode.firstChild.style.height = 'auto'; //Remove the height of the last locked state.
|
|
155
159
|
for(i = 0; i < this.count; i++){
|
|
156
160
|
domStyle.set(r.cells[i], 'height', 'auto');
|
|
157
161
|
}
|
|
@@ -159,17 +163,16 @@ define([
|
|
|
159
163
|
var h1 = domGeometry.getContentBox(r.cells[r.cells.length - 1]).h,
|
|
160
164
|
h2 = domGeometry.getMarginBox(r.cells[r.cells.length - 1]).h;
|
|
161
165
|
|
|
162
|
-
if(has('ie') > 8){
|
|
166
|
+
if(has('ie') > 8){
|
|
163
167
|
//in IE 9 +, sometimes computed height will contain decimal pixels like 34.4 px,
|
|
164
168
|
//so that the locked cells will have different height with the unlocked ones.
|
|
165
169
|
//plus the height by 1 can force IE to ceil the decimal to integer like from 34.4px to 35px
|
|
166
|
-
|
|
167
|
-
h3 = domStyle.getComputedStyle(rowNode.firstChild).height;
|
|
170
|
+
var h3 = domStyle.getComputedStyle(rowNode.firstChild).height;
|
|
168
171
|
if(String(h3).toString().indexOf('.') >= 0){ //decimal
|
|
169
172
|
h2++;
|
|
170
173
|
h1++;
|
|
171
174
|
}
|
|
172
|
-
}
|
|
175
|
+
}
|
|
173
176
|
domStyle.set(rowNode.firstChild, 'height', h2 + 'px');
|
|
174
177
|
|
|
175
178
|
var lead = isHeader ? this.grid.hLayout.lead : 0,
|
|
@@ -179,11 +182,8 @@ define([
|
|
|
179
182
|
var cell = r.cells[i],
|
|
180
183
|
s;
|
|
181
184
|
domClass.add(cell, 'gridxLockedCell');
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
// }else{
|
|
185
|
-
s = {height: h1 + 'px'};
|
|
186
|
-
// }
|
|
185
|
+
|
|
186
|
+
s = {height: h1 + 'px'};
|
|
187
187
|
s[ltr ? 'left' : 'right'] = pl + 'px';
|
|
188
188
|
domStyle.set(cell, s);
|
|
189
189
|
|
|
@@ -9,10 +9,10 @@ define([
|
|
|
9
9
|
"dojo/dom-geometry",
|
|
10
10
|
"dojo/keys",
|
|
11
11
|
"dojo/query",
|
|
12
|
-
|
|
12
|
+
"dojo/_base/sniff",
|
|
13
13
|
"../core/_Module"
|
|
14
14
|
// "dojo/NodeList-traverse"
|
|
15
|
-
], function(declare, win, event, dom, domStyle, domClass, domConstruct, domGeometry, keys, query,
|
|
15
|
+
], function(declare, win, event, dom, domStyle, domClass, domConstruct, domGeometry, keys, query, has, _Module){
|
|
16
16
|
|
|
17
17
|
/*=====
|
|
18
18
|
Column.setWidth = function(width){
|
|
@@ -22,6 +22,7 @@ define([
|
|
|
22
22
|
|
|
23
23
|
return declare(_Module, {
|
|
24
24
|
// summary:
|
|
25
|
+
// module name: columnResizer.
|
|
25
26
|
// Column Resizer machinery.
|
|
26
27
|
// description:
|
|
27
28
|
// This module provides a way to resize column width.
|
|
@@ -108,10 +109,8 @@ define([
|
|
|
108
109
|
cs.maxWidth = width + 'px';
|
|
109
110
|
});
|
|
110
111
|
g.body.onRender();
|
|
112
|
+
g.hLayout.reLayout();
|
|
111
113
|
g.vLayout.reLayout();
|
|
112
|
-
if(g.autoWidth){
|
|
113
|
-
g.hLayout.reLayout();
|
|
114
|
-
}
|
|
115
114
|
t.onResize(colId, width, oldWidth);
|
|
116
115
|
}
|
|
117
116
|
},
|
|
@@ -157,7 +156,7 @@ define([
|
|
|
157
156
|
_mouseout: function(e){
|
|
158
157
|
if(!this._resizing){
|
|
159
158
|
var pos = domGeometry.position(this.grid.header.domNode);
|
|
160
|
-
if(
|
|
159
|
+
if(has('chrome')){
|
|
161
160
|
for(var i in pos){
|
|
162
161
|
pos[i] = Math.floor(pos[i]);
|
|
163
162
|
}
|
|
@@ -262,11 +261,11 @@ define([
|
|
|
262
261
|
},
|
|
263
262
|
|
|
264
263
|
_keydown: function(evt){
|
|
264
|
+
var t = this,
|
|
265
|
+
g = t.grid;
|
|
265
266
|
//support keyboard to resize a column
|
|
266
|
-
if((evt.keyCode == keys.LEFT_ARROW || evt.keyCode == keys.RIGHT_ARROW) && evt
|
|
267
|
-
var
|
|
268
|
-
g = t.grid,
|
|
269
|
-
colId = evt.columnId,
|
|
267
|
+
if((evt.keyCode == keys.LEFT_ARROW || evt.keyCode == keys.RIGHT_ARROW) && g._isCtrlKey(evt) && evt.shiftKey){
|
|
268
|
+
var colId = evt.columnId,
|
|
270
269
|
cellNode = query('[colid="' + g._escapeId(colId) + '"].gridxCell', g.header.innerNode)[0],
|
|
271
270
|
step = t.arg('step');
|
|
272
271
|
step = evt.keyCode == keys.LEFT_ARROW ^ !!g.isLeftToRight() ? step : -step;
|
|
@@ -415,7 +415,12 @@ define([
|
|
|
415
415
|
t.connect(g.body, 'onAfterCell', _onAftercell);
|
|
416
416
|
}
|
|
417
417
|
g.domNode.removeAttribute('aria-readonly');
|
|
418
|
-
t.connect(g, 'onCellDblClick',
|
|
418
|
+
t.connect(g, 'onCellDblClick', function(evt){
|
|
419
|
+
if(!domClass.contains(evt.target, 'gridxTreeExpandoIcon') &&
|
|
420
|
+
!domClass.contains(evt.target, 'gridxTreeExpandoInner')){
|
|
421
|
+
t._onUIBegin(evt);
|
|
422
|
+
}
|
|
423
|
+
});
|
|
419
424
|
t.connect(g.cellWidget, 'onCellWidgetCreated', '_onCellWidgetCreated');
|
|
420
425
|
t.connect(g.cellWidget, 'initializeCellWidget', function(widget, cell){
|
|
421
426
|
var column = cell.column;
|
|
@@ -774,7 +779,10 @@ define([
|
|
|
774
779
|
var delay = column.editorArgs && column.editorArgs.applyDelay || 500;
|
|
775
780
|
clearTimeout(editor._timeoutApply);
|
|
776
781
|
editor._timeoutApply = setTimeout(function(){
|
|
777
|
-
|
|
782
|
+
var rowId = rn.getAttribute('rowid');
|
|
783
|
+
t.apply(rowId, column.id).then(function(){
|
|
784
|
+
t._focusEditor(rowId, column.id);
|
|
785
|
+
});
|
|
778
786
|
}, delay);
|
|
779
787
|
}
|
|
780
788
|
});
|
|
@@ -965,19 +973,14 @@ define([
|
|
|
965
973
|
this._editing = false;
|
|
966
974
|
var focus = this.grid.focus;
|
|
967
975
|
if(focus){
|
|
968
|
-
|
|
969
|
-
setTimeout(function(){
|
|
970
|
-
focus.focusArea('body');
|
|
971
|
-
}, 1);
|
|
972
|
-
}else{
|
|
973
|
-
focus.focusArea('body');
|
|
974
|
-
}
|
|
976
|
+
focus.focusArea('body');
|
|
975
977
|
}
|
|
976
978
|
},
|
|
977
979
|
|
|
978
980
|
_onKey: function(e){
|
|
979
981
|
var t = this,
|
|
980
982
|
g = t.grid,
|
|
983
|
+
ctrlKey = g._isCtrlKey(e),
|
|
981
984
|
col = g._columnsById[e.columnId];
|
|
982
985
|
if(col.editable){
|
|
983
986
|
var editing = t.isEditing(e.rowId, e.columnId);
|
|
@@ -1000,24 +1003,24 @@ define([
|
|
|
1000
1003
|
t.cancel(e.rowId, e.columnId).then(lang.hitch(t, t._blur)).then(function(){
|
|
1001
1004
|
g.focus.focusArea('body');
|
|
1002
1005
|
});
|
|
1003
|
-
}else if(e.keyCode == 'Z'.charCodeAt(0) &&
|
|
1006
|
+
}else if(e.keyCode == 'Z'.charCodeAt(0) && ctrlKey){
|
|
1004
1007
|
if(t.arg('lazySave')){
|
|
1005
1008
|
t.model.undo();
|
|
1006
1009
|
}
|
|
1007
|
-
}else if(e.keyCode == 'Y'.charCodeAt(0) &&
|
|
1010
|
+
}else if(e.keyCode == 'Y'.charCodeAt(0) && ctrlKey){
|
|
1008
1011
|
if(t.arg('lazySave')){
|
|
1009
1012
|
t.model.redo();
|
|
1010
1013
|
}
|
|
1011
|
-
}else if(e.keyCode == 'S'.charCodeAt(0) &&
|
|
1014
|
+
}else if(e.keyCode == 'S'.charCodeAt(0) && ctrlKey){
|
|
1012
1015
|
if(t.arg('lazySave')){
|
|
1013
1016
|
t.model.save();
|
|
1014
1017
|
e.preventDefault();
|
|
1015
1018
|
}
|
|
1016
1019
|
}
|
|
1017
1020
|
}
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
+
// if(t._editing && e.keyCode !== keys.TAB){
|
|
1022
|
+
// e.stopPropagation();
|
|
1023
|
+
// }
|
|
1021
1024
|
}
|
|
1022
1025
|
|
|
1023
1026
|
});
|