ChartRuntimeDiagnostics.fromResolvedConfig constructor

ChartRuntimeDiagnostics.fromResolvedConfig({
  1. required BaseChartConfig config,
  2. required bool jsonDriven,
  3. required Duration configResolveDuration,
  4. required Duration chartBuildDuration,
  5. required Duration totalBuildDuration,
  6. Map<String, dynamic>? effectiveJson,
  7. PayloadNormalizationResult? normalizationResult,
  8. ChartDataProcessingReport? processingReport,
  9. ChartRuntimePerformancePolicy performancePolicy = ChartRuntimePerformancePolicy.defaults,
  10. ChartRuntimePerformancePolicyResolution? performancePolicyResolution,
})

Implementation

factory ChartRuntimeDiagnostics.fromResolvedConfig({
  required BaseChartConfig config,
  required bool jsonDriven,
  required Duration configResolveDuration,
  required Duration chartBuildDuration,
  required Duration totalBuildDuration,
  Map<String, dynamic>? effectiveJson,
  PayloadNormalizationResult? normalizationResult,
  ChartDataProcessingReport? processingReport,
  ChartRuntimePerformancePolicy performancePolicy =
      ChartRuntimePerformancePolicy.defaults,
  ChartRuntimePerformancePolicyResolution? performancePolicyResolution,
}) {
  final resolvedPerformancePolicy =
      performancePolicyResolution ??
      ChartRuntimePerformancePolicyResolution.fallback(performancePolicy);
  final configSignature = ChartDataSignature.fromConfig(config);
  final inputSignature = effectiveJson != null
      ? ChartDataSignature.fromJson(effectiveJson)
      : configSignature;
  final rawInputSignature = normalizationResult != null
      ? ChartDataSignature.fromJson(normalizationResult.rawPayload)
      : null;
  final sourceCount = inputSignature.dataPointCount;
  final renderedCount =
      processingReport?.outputPointCount ?? configSignature.dataPointCount;
  final effectiveCount = processingReport?.effectiveDataPointCount;
  final sampleInputCount = processingReport?.sampleInputPointCount;
  final processingCacheStats = ChartDataProcessor.processingCacheStats;
  final renderCacheStats = chartRenderCacheStats;
  final pictureCacheStats = pictureCache.stats;

  return ChartRuntimeDiagnostics(
    type: config.type,
    typeString: chartTypeToString(config.type),
    jsonDriven: jsonDriven,
    inputSignature: inputSignature,
    configSignature: configSignature,
    sourceDataPointCount: sourceCount,
    effectiveDataPointCount: effectiveCount,
    sampleInputPointCount: sampleInputCount,
    renderedDataPointCount: renderedCount,
    seriesCount: configSignature.seriesCount,
    configSampledData: renderedCount < sourceCount,
    rawInputSignature: rawInputSignature,
    payloadWasNormalized: normalizationResult?.wasNormalized ?? false,
    payloadChanged: normalizationResult?.changed ?? false,
    payloadDiffCount: normalizationResult?.summary.total ?? 0,
    payloadChangedPaths: normalizationResult?.changedPaths ?? const [],
    dataMode: effectiveJson?['dataMode']?.toString(),
    sampling: effectiveJson?['sampling'],
    configResolveDuration: configResolveDuration,
    chartBuildDuration: chartBuildDuration,
    totalBuildDuration: totalBuildDuration,
    processingCacheStats: processingCacheStats,
    renderCacheStats: renderCacheStats,
    pictureCacheStats: pictureCacheStats,
    performanceSummary: ChartRuntimePerformanceSummary.fromRuntimeInputs(
      sourceDataPointCount: sourceCount,
      effectiveDataPointCount: effectiveCount,
      sampleInputPointCount: sampleInputCount,
      renderedDataPointCount: renderedCount,
      seriesCount: configSignature.seriesCount,
      configSampledData: renderedCount < sourceCount,
      payloadWasNormalized: normalizationResult?.wasNormalized ?? false,
      payloadChanged: normalizationResult?.changed ?? false,
      processingCacheStats: processingCacheStats,
      renderCacheStats: renderCacheStats,
      pictureCacheStats: pictureCacheStats,
      policy: resolvedPerformancePolicy.policy,
    ),
    performancePolicyResolution: resolvedPerformancePolicy,
  );
}