Skip to content

Commit 70536b7

Browse files
committed
Merge branch 'master' into 1.3
2 parents 2002490 + f6dcd4c commit 70536b7

File tree

40 files changed

+161
-78
lines changed

40 files changed

+161
-78
lines changed

Grid.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ define([
4949
// - revision: Number: The Git rev from which dojo was pulled
5050
major: 1,
5151
minor: 3,
52-
patch: 5,
52+
patch: 6,
5353
flag: "",
5454
toString: function(){
5555
return this.major + "." + this.minor + "." + this.patch + this.flag; // String

core/model/Model.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,22 @@ define([
376376
return d;
377377
},
378378

379+
_sizeAll: function(parentId){
380+
var size = this.size(parentId), i, childId,
381+
count = 0;
382+
383+
size = size === -1 ? 0 : size;
384+
count += size;
385+
386+
for(i = 0; i < size; i++){
387+
childId = this.indexToId(i, parentId);
388+
console.log(childId);
389+
count += this._sizeAll(childId);
390+
}
391+
392+
return count;
393+
},
394+
379395
//Events---------------------------------------------------------------------------------
380396
onDelete: function(/*id, index*/){},
381397

core/model/cache/Async.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ define([
139139
//Minus index range list B from index range list A,
140140
//assuming A and B do not have overlapped ranges.
141141
//This is a set operation
142-
if(!rangesB.length || !rangesA.length){
142+
if(!rangesB || !rangesB.length || !rangesA.length){
143143
return rangesA;
144144
}
145145
var indexes = [], f = 0, r, res = [],

modules/Body.js

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ define([
6464
// Whether to show a visual effect when mouse hovering a row.
6565
rowHoverEffect: true,
6666
67-
// renderredIds: Object
67+
// renderedIds: Object
6868
// This object contains the current renderred rows Ids.
6969
// For grid not using virtualVSroller, this is equal to current row ids in the grid body.
70-
renderredIds: {},
70+
renderedIds: {},
7171
// stuffEmptyCell: Boolean
7272
// Whether to stuff a cell with &nbsp; if it is empty.
7373
stuffEmptyCell: true,
@@ -267,7 +267,7 @@ define([
267267
g = t.grid,
268268
dn = t.domNode = g.bodyNode;
269269
t._cellCls = {};
270-
t.renderredIds = {};
270+
t.renderedIds = {};
271271
if(t.arg('rowHoverEffect')){
272272
domClass.add(dn, 'gridxBodyRowHoverEffect');
273273
}
@@ -344,7 +344,7 @@ define([
344344

345345
autoUpdate: true,
346346

347-
renderredIds: {},
347+
renderedIds: {},
348348

349349
compareOnSet: function(v1, v2){
350350
return typeof v1 == 'object' && typeof v2 == 'object' ?
@@ -421,7 +421,7 @@ define([
421421
domClass.toggle(t.domNode, 'gridxBodyRowHoverEffect', t.arg('rowHoverEffect'));
422422

423423
// cache visual ids
424-
// t.renderredIds = {};
424+
// t.renderedIds = {};
425425

426426
// domClass.add(loadingNode, 'gridxLoading');
427427
t._showLoadingMask();
@@ -464,7 +464,7 @@ define([
464464
t.onUnrender(id, 'refresh');
465465
}
466466
domConstruct.destroy(n);
467-
t.renderredIds[id] = undefined;
467+
t.renderedIds[id] = undefined;
468468
n = tmp;
469469
}
470470
array.forEach(renderedRows, t.onAfterRow, t);
@@ -604,11 +604,11 @@ define([
604604
// id = n.firstChild.getAttribute('rowid');
605605
// n.removeChild(n.firstChild);
606606
// if(g.model.isId(id)){
607-
// t.renderredIds[id] = undefined;
607+
// t.renderedIds[id] = undefined;
608608
// }
609609
// }
610-
// reset renderredIds since all rows in body are destroyed
611-
t.renderredIds = {};
610+
// reset renderedIds since all rows in body are destroyed
611+
t.renderedIds = {};
612612
str = t._buildRows(start, count, uncachedRows, renderedRows);
613613
n.innerHTML = str;
614614
n.scrollTop = scrollTop;
@@ -638,8 +638,8 @@ define([
638638
id = n.firstChild.getAttribute('rowid');
639639
n.removeChild(n.firstChild);
640640
}
641-
//reset renderredIds since all rows in body are destroyed.
642-
t.renderredIds = {};
641+
//reset renderedIds since all rows in body are destroyed.
642+
t.renderedIds = {};
643643
en.innerHTML = emptyInfo;
644644
en.style.zIndex = 1;
645645
t._hideLoadingMask();
@@ -666,7 +666,7 @@ define([
666666
t.onUnrender(id, undefined, 'post');
667667
}
668668
domConstruct.destroy(bn.lastChild);
669-
t.renderredIds[id] = undefined;
669+
t.renderedIds[id] = undefined;
670670
}
671671
}else{
672672
var tp = bn.scrollTop;
@@ -681,7 +681,7 @@ define([
681681
t.onUnrender(id , undefined, 'pre');
682682
}
683683
domConstruct.destroy(bn.firstChild);
684-
t.renderredIds[id] = undefined;
684+
t.renderedIds[id] = undefined;
685685
}
686686
t.renderStart += i;
687687
bn.scrollTop = tp > 0 ? tp : 0;
@@ -796,7 +796,7 @@ define([
796796
row = g.row(rowInfo.rowId, 1);
797797
s.push('<div class="gridxRow ', i % 2 ? 'gridxRowOdd' : '',
798798
'" role="row" visualindex="', i);
799-
t.renderredIds[rowInfo.rowId] = 1;
799+
t.renderedIds[rowInfo.rowId] = 1;
800800
if(row){
801801
t.model.keep(row.id);
802802
s.push('" rowid="', encode(row.id),
@@ -839,7 +839,7 @@ define([
839839
n.setAttribute('rowindex', rowInfo.rowIndex);
840840
n.setAttribute('parentid', rowInfo.parentId || '');
841841
n.innerHTML = t._buildCells(row, rowInfo.visualIndex);
842-
t.renderredIds[row.id] = 1;
842+
t.renderedIds[row.id] = 1;
843843
t.onAfterRow(row);
844844
}else{
845845
console.error('Error in Body._buildRowContent: Row is not in cache: ' + rowInfo.rowIndex);

modules/Filter.js

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -357,10 +357,13 @@ define([
357357
return d.getTime();
358358
case 'time':
359359
d = new Date(d);
360-
d.setDate(1);
361-
d.setMonth(0);
362-
d.setFullYear(2000);
363-
return d.getTime();
360+
if(!isNaN(d.getTime())){ //d is not invalid date
361+
d.setDate(1);
362+
d.setMonth(0);
363+
d.setFullYear(2000);
364+
return d.getTime();
365+
}
366+
return null;
364367
default: //string
365368
return (d === null || d === undefined) ? '' : String(d);
366369
}
@@ -485,13 +488,22 @@ define([
485488

486489
greaterEqual: function(expr1, expr2){
487490
return wrap(function(){
488-
return expr1.apply(0, arguments) >= expr2.apply(0, arguments);
491+
var v1 = expr1.apply(0, arguments);
492+
var v2 = expr2.apply(0, arguments);
493+
return v1 !== undefined && v1 !== null &&
494+
v2 !== undefined && v2 !== null &&
495+
v1 >= v2;
489496
}, "greaterEqual", [expr1, expr2]);
490497
},
491498

492499
lessEqual: function(expr1, expr2){
493500
return wrap(function(){
494-
return expr1.apply(0, arguments) <= expr2.apply(0, arguments);
501+
var v1 = expr1.apply(0, arguments);
502+
var v2 = expr2.apply(0, arguments);
503+
504+
return v1 !== undefined && v1 !== null &&
505+
v2 !== undefined && v2 !== null &&
506+
v1 <= v2;
495507
}, "lessEqual", [expr1, expr2]);
496508
},
497509

modules/RowHeader.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,10 @@ define([
151151
if(typeof row === 'string'){
152152
row = this.grid.row(row, 1);
153153
}
154+
if(!row){
155+
console.warn('rowHeader._onAfterRow, row is null');
156+
return;
157+
}
154158
var t = this,
155159
visualIndex = row.visualIndex(),
156160
n = query('[visualindex="' + visualIndex + '"].gridxRowHeaderRow', t.bodyNode)[0],
@@ -167,7 +171,7 @@ define([
167171
},
168172

169173
_onAfterCell: function(cell){
170-
//This is to ensure the rowHeader get correct height for editable cells
174+
//This is to ensuregit the rowHeader get correct height for editable cells
171175
var t = this,
172176
visualIndex = cell.row.visualIndex(),
173177
n = query('[visualindex="' + visualIndex + '"].gridxRowHeaderRow', t.bodyNode)[0],
@@ -188,7 +192,7 @@ define([
188192
function getHeight(){
189193
return has('ie') <= 8 || t._isCollapse ? bodyNode.offsetHeight + 'px' : domStyle.getComputedStyle(bodyNode).height;
190194
}
191-
// setTimeout(function(){
195+
setTimeout(function(){
192196
h = getHeight();
193197
if((h + '').indexOf('.') >= 0){
194198
rowHeaderNode.style.height = rowHeaderNode.firstChild.style.height = bodyNode.style.height = bodyNode.clientHeight + 1 + 'px';
@@ -199,7 +203,7 @@ define([
199203
// if(rowHeaderNode && rowHeaderNode.firstChild){
200204
// rowHeaderNode.style.height = rowHeaderNode.firstChild.style.height = getHeight();
201205
// }
202-
// }, 0);
206+
}, 0);
203207
},
204208

205209
_onRendered: function(start, count){

modules/Tree.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,27 @@ define([
440440
return d;
441441
},
442442

443+
loadChildRecursive: function(id){
444+
var d = new Deferred(),
445+
t = this,
446+
m = t.model;
447+
448+
var i, dl = [], size = m.size(id);
449+
// console.log(context.size);
450+
m.when({start: 0, count: 1, parentId: id}, function(){
451+
size = m.size(id);
452+
for(i = 0; i < size; ++i){
453+
var childId = m.indexToId(i, id);
454+
dl.push(t.loadChildRecursive(childId));
455+
}
456+
}).then(function(){
457+
new DeferredList(dl).then(function(){
458+
d.callback();
459+
});
460+
});
461+
return d;
462+
},
463+
443464
collapseRecursive: function(id, skipUpdateBody){
444465
var d = new Deferred(),
445466
success = lang.hitch(d, d.callback),

modules/extendedSelect/Row.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ define([
356356
},
357357

358358
_onMark: function(id, toMark, oldState, type){
359-
if(type == 'select' && this.grid.body.renderredIds[id]){
359+
if(type == 'select' && this.grid.body.renderedIds[id]){
360360
// if(type == 'select'){
361361
var nodes = query('[rowid="' + this.grid._escapeId(id) + '"]', this.grid.mainNode);
362362
if(nodes.length){

modules/filter/FilterBar.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -661,12 +661,14 @@ define([
661661
if(s instanceof Date){return s;}
662662

663663
var pattern = /(\d\d?):(\d\d?):(\d\d?)/;
664-
pattern.test(s);
665-
var d = new Date();
666-
d.setHours(parseInt(RegExp.$1));
667-
d.setMinutes(parseInt(RegExp.$2));
668-
d.setSeconds(parseInt(RegExp.$3));
669-
return d;
664+
if(pattern.test(s)){
665+
var d = new Date();
666+
d.setHours(parseInt(RegExp.$1));
667+
d.setMinutes(parseInt(RegExp.$2));
668+
d.setSeconds(parseInt(RegExp.$3));
669+
return d;
670+
}
671+
return 'invalid time';
670672
},
671673
_stringToDatetime: function(s){
672674
if(s instanceof Date){return s;}

modules/filter/FilterPane.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,9 @@ define([
350350
interval = this.sltDateInterval.get('value');
351351

352352
switch(interval){
353+
case 'hour':
354+
past.setHours(cur.getHours() - val);
355+
break;
353356
case 'day':
354357
past.setDate(cur.getDate() - val);
355358
break;
@@ -388,6 +391,9 @@ define([
388391
interval = this.sltDatetimeInterval.get('value');
389392

390393
switch(interval){
394+
case 'hour':
395+
past.setHours(cur.getHours() - val);
396+
break;
391397
case 'day':
392398
past.setDate(cur.getDate() - val);
393399
break;
@@ -415,11 +421,6 @@ define([
415421
},
416422

417423
_setValue: function(value){
418-
console.log('in set value');
419-
console.log(value);
420-
console.log(typeof value);
421-
console.log(value instanceof Date);
422-
423424
if(!this._isValidValue(value)){return;}
424425
var type = this._getType(),
425426
combo = this._needComboBox(), tempDate;

0 commit comments

Comments
 (0)