@@ -75,21 +75,30 @@ LiveMysqlSelect.prototype._setRows = function(rows){
75
75
self . emit ( 'update' , rows ) ;
76
76
77
77
if ( ! self . base . settings . skipDiff ) {
78
+ var diff = [ ] ;
79
+ var diffEvent = function ( ) {
80
+ self . emit . apply ( self , arguments ) ;
81
+ diff . push ( Array . prototype . slice . call ( arguments ) ) ;
82
+ }
78
83
rows . forEach ( function ( row , index ) {
79
84
if ( self . data . length - 1 < index ) {
80
- self . emit ( 'added' , row , index ) ;
85
+ diffEvent ( 'added' , row , index ) ;
81
86
self . data [ index ] = row ;
82
87
} else if ( JSON . stringify ( self . data [ index ] ) !== JSON . stringify ( row ) ) {
83
- self . emit ( 'changed' , self . data [ index ] , row , index ) ;
88
+ diffEvent ( 'changed' , self . data [ index ] , row , index ) ;
84
89
self . data [ index ] = row ;
85
90
}
86
91
} ) ;
87
92
if ( self . data . length > rows . length ) {
88
93
for ( var i = self . data . length - 1 ; i >= rows . length ; i -- ) {
89
- self . emit ( 'removed' , self . data [ i ] , i ) ;
94
+ diffEvent ( 'removed' , self . data [ i ] , i ) ;
90
95
}
91
96
self . data . splice ( rows . length , self . data . length - rows . length ) ;
92
97
}
98
+ if ( diff . length !== 0 ) {
99
+ // Output all difference events in a single event
100
+ self . emit ( 'diff' , diff ) ;
101
+ }
93
102
}
94
103
95
104
self . lastUpdate = Date . now ( ) ;
0 commit comments