flattenJSON static method

void flattenJSON(
  1. List? jsonKeys,
  2. List<num> times,
  3. List<num> values,
  4. String valuePropertyName,
)

Implementation

static void flattenJSON(List? jsonKeys, List<num> times, List<num> values, String valuePropertyName) {
  int i = 1;
  Map? key = jsonKeys?[0];

  while (key != null && key[valuePropertyName] == null) {
    key = jsonKeys?[i++];
  }

  if (key == null) return; // no data

  dynamic value = key[valuePropertyName];
  if (value == null) return; // no data

  // if ( Array.isArray( value ) ) {
  if (value.runtimeType == List) {
    do {
      value = key?[valuePropertyName];

      if (value != null) {
        times.add(key?['time']);
        values.addAll(value); // push all elements
      }

      key = jsonKeys?[i++];
    } while (key != null);
  }
  else if (value.toArray != null) {
    // ...assume THREE.Math-ish

    do {
      value = key?[valuePropertyName];

      if (value != null) {
        times.add(key?['time']);
        value.toArray(values, values.length);
      }

      key = jsonKeys?[i++];
    } while (key != null);
  }
  else {
    do {
      value = key?[valuePropertyName];

      if (value != null) {
        times.add(key?['time']);
        values.add(value);
      }

      key = jsonKeys?[i++];
    } while (key != null);
  }
}