@@ -23,8 +23,7 @@ define(
23
23
24
24
addOrUpdateRow ( row ) {
25
25
if ( this . isLADRow ( row ) ) {
26
- this . removeRowsByObject ( row . objectKeyString ) ;
27
- super . addRows ( [ row ] , 'add' ) ;
26
+ this . addRows ( [ row ] ) ;
28
27
}
29
28
}
30
29
@@ -38,7 +37,7 @@ define(
38
37
return ! isStaleData ;
39
38
}
40
39
41
- addOne ( item ) {
40
+ addOne ( item ) {
42
41
if ( item . isDummyRow ) {
43
42
this . ladMap . set ( item . objectKeyString , this . rows . length ) ;
44
43
this . rows . push ( item ) ;
@@ -48,28 +47,52 @@ define(
48
47
49
48
if ( this . isNewerThanLAD ( item ) ) {
50
49
let rowIndex = this . ladMap . get ( item . objectKeyString ) ;
51
- let itemToReplace = this . rows [ rowIndex ] ;
52
50
this . rows [ rowIndex ] = item ;
53
- this . emit ( 'remove' , [ itemToReplace ] ) ;
51
+ this . removeExistingByKeystring ( item . objectKeyString ) ;
54
52
this . emit ( 'add' , [ item ] ) ;
55
53
return true ;
56
54
}
57
55
return false ;
58
56
}
59
57
58
+ addRows ( rows ) {
59
+ let rowsToAdd = this . filterRows ( rows ) ;
60
+
61
+ if ( rowsToAdd . length > 0 ) {
62
+ rowsToAdd . forEach ( this . addOne . bind ( this ) ) ;
63
+ this . emit ( 'add' , rowsToAdd ) ;
64
+ }
65
+ }
66
+
60
67
removeAllRowsForObject ( objectKeyString ) {
61
68
super . removeAllRowsForObject ( objectKeyString ) ;
62
69
this . rebuildLadMap ( ) ;
63
70
}
64
71
72
+ removeExistingByKeystring ( keyString ) {
73
+ let removed = [ ] ;
74
+
75
+ this . rows . forEach ( ( row ) => {
76
+ if ( row . objectKeyString === keyString ) {
77
+ removed . push ( row ) ;
78
+
79
+ return false ;
80
+ } else {
81
+ return true ;
82
+ }
83
+ } ) ;
84
+
85
+ this . emit ( 'remove' , removed ) ;
86
+ }
87
+
65
88
rebuildLadMap ( ) {
66
89
this . ladMap . clear ( ) ;
67
90
this . rows . forEach ( ( row , index ) => {
68
91
this . ladMap . set ( row . objectKeyString , index ) ;
69
92
} ) ;
70
93
}
71
94
72
- reorder ( reorderPlan ) {
95
+ reorder ( reorderPlan ) {
73
96
let oldRows = this . rows . slice ( ) ;
74
97
reorderPlan . forEach ( reorderEvent => {
75
98
let item = oldRows [ reorderEvent . oldIndex ] ;
0 commit comments