setData method
Implementation
void setData(final ContextData data) {
final Map<String, ExperimentVariables> index = {};
final Map<String, List<ExperimentVariables>> indexVariables = {};
for (Experiment experiment in data.experiments) {
final ExperimentVariables experimentVariables = ExperimentVariables();
experimentVariables.data = experiment;
for (ExperimentVariant variant in experiment.variants) {
if ((variant.config != null) && variant.config!.isNotEmpty) {
final Map<String, dynamic>? variables = variableParser_.parse(
this, experiment.name, variant.name, variant.config!);
variables?.forEach((key, value) {
List<ExperimentVariables>? keyExperimentVariables =
indexVariables[key];
if (keyExperimentVariables == null) {
keyExperimentVariables = [];
indexVariables[key] = keyExperimentVariables;
}
int at = keyExperimentVariables.indexOf(experimentVariables);
if (at < 0) {
at = -at - 1;
keyExperimentVariables.insert(at, experimentVariables);
}
});
experimentVariables.variables.add(variables);
} else {
experimentVariables.variables.add({});
}
}
index[experiment.name] = experimentVariables;
}
index_ = index;
indexVariables_ = indexVariables;
data_ = data;
setRefreshTimer();
}