@@ -38,55 +38,48 @@ function getExperimentsMap(configObj) {
38
38
id : experiment . id ,
39
39
key : experiment . key ,
40
40
variationsMap : experiment . variations . reduce ( function ( variations , variation ) {
41
- var variablesMap = { } ;
42
- if ( variation . featureEnabled ) {
43
- variablesMap = variation . variables . reduce ( function ( variables , variable ) {
44
- // developing a temporary map using variable ids. the entry with ids will be deleted after merging with featurevaribles
45
- variables [ variable . id ] = {
46
- id : variable . id ,
47
- value : variable . value ,
48
- } ;
49
- return variables ;
50
- } , { } ) ;
51
- }
52
41
variations [ variation . key ] = {
53
42
id : variation . id ,
54
43
key : variation . key ,
55
44
featureEnabled : variation . featureEnabled ,
56
- variablesMap,
45
+ variablesMap : getMergedVariablesMap ( configObj , variation , experiment . id , featureVariablesMap )
57
46
} ;
58
47
return variations ;
59
48
} , { } ) ,
60
49
} ;
61
- var featureId = configObj . experimentFeatureMap [ experiment . id ] ;
62
- if ( featureId ) {
63
- mergeFeatureVariables ( experiments [ experiment . key ] , featureVariablesMap [ featureId ] ) ;
64
- }
65
50
}
66
51
return experiments ;
67
52
} , { } ) ;
68
53
}
69
54
70
- // Merges feature varibles in variations of passed in experiment
71
- // Modifies experiment object.
72
- function mergeFeatureVariables ( experiment , featureVariables ) {
73
- var variationKeys = Object . keys ( experiment . variationsMap ) ;
74
- variationKeys . forEach ( function ( variationKey ) {
75
- var variation = experiment . variationsMap [ variationKey ] ;
76
- featureVariables . forEach ( function ( featureVariable ) {
77
- var variationVariable = variation . variablesMap [ featureVariable . id ] ;
78
- var variableValue = variationVariable ? variationVariable . value : featureVariable . defaultValue ;
79
- variation . variablesMap [ featureVariable . key ] = {
55
+ // Merges feature key and type from feature variables to variation variables.
56
+ function getMergedVariablesMap ( configObj , variation , experimentId , featureVariablesMap ) {
57
+ var featureId = configObj . experimentFeatureMap [ experimentId ] ;
58
+ variablesObject = { } ;
59
+ if ( featureId ) {
60
+ experimentFeatureVariables = featureVariablesMap [ featureId ] ;
61
+ // Temporary variation variables map to get values to merge.
62
+ var tempVariablesIdMap = variation . variables . reduce ( function ( variablesMap , variable ) {
63
+ variablesMap [ variable . id ] = {
64
+ id : variable . id ,
65
+ value : variable . value ,
66
+ } ;
67
+ return variablesMap ;
68
+ } , { } ) ;
69
+ variablesObject = experimentFeatureVariables . reduce ( function ( variablesMap , featureVariable ) {
70
+ variationVariable = tempVariablesIdMap [ featureVariable . id ] ;
71
+ variableValue = variation . featureEnabled && variationVariable ? variationVariable . value : featureVariable . defaultValue ;
72
+ variablesMap [ featureVariable . key ] = {
80
73
id : featureVariable . id ,
81
74
key : featureVariable . key ,
82
75
type : featureVariable . type ,
83
76
value : variableValue ,
84
77
} ;
85
- // deleting the temporary entry
86
- variationVariable && delete variation . variablesMap [ featureVariable . id ] ;
87
- } )
88
- } ) ;
89
- } ;
78
+ return variablesMap ;
79
+ } , { } )
80
+ }
81
+ return variablesObject ;
82
+ }
90
83
91
84
// Gets map of all experiments
92
85
function getFeaturesMap ( configObj , allExperiments ) {
0 commit comments