File tree Expand file tree Collapse file tree 2 files changed +40
-3
lines changed Expand file tree Collapse file tree 2 files changed +40
-3
lines changed Original file line number Diff line number Diff line change @@ -26,7 +26,26 @@ module.exports = {
26
26
// Check if Labels are equal and if dataset length is equal
27
27
if ( newLabels === oldLabels && oldData . datasets . length === newData . datasets . length ) {
28
28
newData . datasets . forEach ( ( dataset , i ) => {
29
- chart . data . datasets [ i ] = dataset
29
+ // Get new and old dataset keys
30
+ const oldDatasetKeys = Object . keys ( oldData . datasets [ i ] )
31
+ const newDatasetKeys = Object . keys ( dataset )
32
+
33
+ // Get keys that aren't present in the new data
34
+ const deletionKeys = oldDatasetKeys . filter ( ( key ) => {
35
+ return key !== '_meta' && newDatasetKeys . indexOf ( key ) === - 1
36
+ } )
37
+
38
+ // Remove outdated key-value pairs
39
+ deletionKeys . forEach ( ( deletionKey ) => {
40
+ delete chart . data . datasets [ i ] [ deletionKey ]
41
+ } )
42
+
43
+ // Update attributes individually to avoid re-rendering the entire chart
44
+ for ( const attribute in dataset ) {
45
+ if ( dataset . hasOwnProperty ( attribute ) ) {
46
+ chart . data . datasets [ i ] [ attribute ] = dataset [ attribute ]
47
+ }
48
+ }
30
49
} )
31
50
32
51
chart . data . labels = newData . labels
Original file line number Diff line number Diff line change @@ -4,7 +4,6 @@ module.exports = {
4
4
required : true
5
5
}
6
6
} ,
7
-
8
7
watch : {
9
8
'chartData' : {
10
9
handler ( newData , oldData ) {
@@ -27,7 +26,26 @@ module.exports = {
27
26
// Check if Labels are equal and if dataset length is equal
28
27
if ( newLabels === oldLabels && oldData . datasets . length === newData . datasets . length ) {
29
28
newData . datasets . forEach ( ( dataset , i ) => {
30
- chart . data . datasets [ i ] = dataset
29
+ // Get new and old dataset keys
30
+ const oldDatasetKeys = Object . keys ( oldData . datasets [ i ] )
31
+ const newDatasetKeys = Object . keys ( dataset )
32
+
33
+ // Get keys that aren't present in the new data
34
+ const deletionKeys = oldDatasetKeys . filter ( ( key ) => {
35
+ return key !== '_meta' && newDatasetKeys . indexOf ( key ) === - 1
36
+ } )
37
+
38
+ // Remove outdated key-value pairs
39
+ deletionKeys . forEach ( ( deletionKey ) => {
40
+ delete chart . data . datasets [ i ] [ deletionKey ]
41
+ } )
42
+
43
+ // Update attributes individually to avoid re-rendering the entire chart
44
+ for ( const attribute in dataset ) {
45
+ if ( dataset . hasOwnProperty ( attribute ) ) {
46
+ chart . data . datasets [ i ] [ attribute ] = dataset [ attribute ]
47
+ }
48
+ }
31
49
} )
32
50
33
51
chart . data . labels = newData . labels
You can’t perform that action at this time.
0 commit comments