setData method

void setData(
  1. ContextData data
)

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();
}