fromJson static method

BaseChartConfig fromJson(
  1. Map<String, dynamic> json, {
  2. bool validatePayload = false,
  3. bool strictValidation = false,
  4. void onValidationResult(
    1. ValidationResult result
    )?,
  5. void onPayloadNormalizationResult(
    1. PayloadNormalizationResult result
    )?,
  6. bool autoNormalizePayload = false,
  7. bool sanitizeTradingPayload = true,
  8. bool dropUnsupportedSampling = true,
  9. int? normalizeDefaultThreshold,
  10. ChartDataMode normalizeDefaultMode = ChartDataMode.auto,
  11. PayloadNormalizationOptions? normalizationOptions,
  12. int validationReportMaxIssues = 5,
})

Create a chart configuration from JSON

Implementation

static BaseChartConfig fromJson(
  Map<String, dynamic> json, {
  bool validatePayload = false,
  bool strictValidation = false,
  void Function(ValidationResult result)? onValidationResult,
  void Function(PayloadNormalizationResult result)?
  onPayloadNormalizationResult,
  bool autoNormalizePayload = false,
  bool sanitizeTradingPayload = true,
  bool dropUnsupportedSampling = true,
  int? normalizeDefaultThreshold,
  ChartDataMode normalizeDefaultMode = ChartDataMode.auto,
  PayloadNormalizationOptions? normalizationOptions,
  int validationReportMaxIssues = 5,
}) {
  final fallbackNormalizationOptions =
      normalizationOptions ??
      PayloadNormalizationOptions(
        dropUnsupportedSampling: dropUnsupportedSampling,
        defaultThreshold: normalizeDefaultThreshold,
        defaultMode: normalizeDefaultMode,
        sanitizeTradingPayload: sanitizeTradingPayload,
      );
  final effectiveNormalizationOptions = PayloadNormalizationOptions.resolve(
    json,
    fallback: fallbackNormalizationOptions,
  );
  final shouldNormalizePayload =
      PayloadNormalizationOptions.shouldAutoNormalize(
        json,
        fallback: autoNormalizePayload,
      );
  final normalizationResult = shouldNormalizePayload
      ? ChartConfigValidator.normalizePayloadWithReport(
          json,
          options: effectiveNormalizationOptions,
        )
      : PayloadNormalizationResult.passThrough(json);
  onPayloadNormalizationResult?.call(normalizationResult);
  final effectiveJson = normalizationResult.normalizedPayload;

  if (validatePayload) {
    final result = ChartConfigValidator.validateJsonPayload(
      effectiveJson,
      deep: true,
    );
    onValidationResult?.call(result);
    if (strictValidation && !result.isValid) {
      throw FormatException(
        result.toReport(maxIssues: validationReportMaxIssues).toPlainText(),
      );
    }
  }
  return BaseChartConfig.fromJson(effectiveJson);
}