@@ -11,6 +11,7 @@ import {
11
11
SquareLetterT ,
12
12
} from '@gravity-ui/icons' ;
13
13
import { i18n } from 'i18n' ;
14
+ import { pick } from 'lodash' ;
14
15
import isEqual from 'lodash/isEqual' ;
15
16
import type {
16
17
CommonNumberFormattingOptions ,
@@ -440,7 +441,7 @@ type ActualizaeUpdatesArgs = {
440
441
visualization ?: Shared [ 'visualization' ] ;
441
442
sectionDatasetFields : Field [ ] ;
442
443
visualizationFields : Field [ ] ;
443
- onUpdateItemsGuids ?: string [ ] ;
444
+ onUpdateItemsGuids ?: { guid : string ; datasetId ?: string } [ ] ;
444
445
} ;
445
446
446
447
export function actualizeUpdates ( {
@@ -456,28 +457,42 @@ export function actualizeUpdates({
456
457
return updates ;
457
458
}
458
459
459
- const sectionDatasetFieldsGuids = new Set ( sectionDatasetFields . map ( ( field ) => field . guid ) ) ;
460
+ const getFieldKey = ( field : { guid : string ; datasetId ?: string } ) =>
461
+ `${ field . datasetId } __${ field . guid } ` ;
460
462
461
- const placeholders : Placeholder [ ] = currentVisualization ?. placeholders || [ ] ;
463
+ const sectionDatasetFieldsGuids = sectionDatasetFields . reduce < Record < string , Field > > (
464
+ ( acc , field ) => {
465
+ acc [ getFieldKey ( field ) ] = field ;
466
+
467
+ return acc ;
468
+ } ,
469
+ { } ,
470
+ ) ;
462
471
472
+ const placeholders : Placeholder [ ] = currentVisualization ?. placeholders || [ ] ;
463
473
const placeholdersItems = placeholders . reduce ( ( acc : Field [ ] , placeholder : Placeholder ) => {
464
474
const items = placeholder . items || [ ] ;
465
475
466
476
return [ ...acc , ...items ] ;
467
477
} , [ ] as Field [ ] ) ;
468
478
469
- const sectionVisualizationFieldsGuids = new Set ( [
470
- ...placeholdersItems . map ( ( field : Field ) => field . guid ) ,
471
- ...visualizationFields . map ( ( field : Field ) => field . guid ) ,
479
+ const sectionVisualizationFields = [
480
+ ...placeholdersItems . map ( ( field : Field ) => pick ( field , ' guid' , 'datasetId' ) ) ,
481
+ ...visualizationFields . map ( ( field : Field ) => pick ( field , ' guid' , 'datasetId' ) ) ,
472
482
...onUpdateItemsGuids ,
473
- ] ) ;
483
+ ] . reduce < Record < string , unknown > > ( ( acc , field ) => {
484
+ acc [ getFieldKey ( field ) ] = field ;
485
+
486
+ return acc ;
487
+ } , { } ) ;
474
488
475
489
return updates . filter ( ( update : Update ) => {
476
490
const field = update . field ;
491
+ const key = getFieldKey ( field ) ;
477
492
478
493
return (
479
- ( sectionDatasetFieldsGuids . has ( field . guid ) && isFieldVisible ( field as Field ) ) ||
480
- sectionVisualizationFieldsGuids . has ( field . guid )
494
+ ( sectionDatasetFieldsGuids [ key ] && isFieldVisible ( field as Field ) ) ||
495
+ sectionVisualizationFields [ key ]
481
496
) ;
482
497
} ) ;
483
498
}
0 commit comments