pacificclimate/climate-explorer-frontend

View on GitHub
src/components/graphs/DualLongTermAveragesGraph.js

Summary

Maintainability
A
1 hr
Test Coverage
import React from "react";

import _ from "lodash";

import { dataToLongTermAverageGraph } from "../../core/chart-generators";
import { timeKeyToResolutionIndex } from "../../core/util";
import LongTermAveragesGraph from "./LongTermAveragesGraph";

export default function DualLongTermAveragesGraph(props) {
  function getMetadata(timeOfYear) {
    // Return metadata for variable_id and, if present and different, for
    // comparand_id.
    const commonMetadataFromProps = _.pick(
      props,
      "ensemble_name",
      "model_id",
      "experiment",
      "area",
    );
    const timeResolutionAndIndex = timeKeyToResolutionIndex(timeOfYear);

    let result = [
      {
        ...commonMetadataFromProps,
        ...timeResolutionAndIndex,
        variable_id: props.variable_id,
      },
    ];

    if (props.comparand_id && props.comparand_id !== props.variable_id) {
      result.push({
        ...commonMetadataFromProps,
        ...timeResolutionAndIndex,
        variable_id: props.comparand_id,
      });
    }
    return result;
  }

  function dataToGraphSpec(data, context) {
    // Convert `data` (described by `meta`) to a graph specification compatible
    // with `DataGraph`.
    return dataToLongTermAverageGraph(data, context);
  }

  const graphProps = _.pick(
    props,
    "model_id",
    "variable_id",
    "comparand_id",
    "experiment",
    "meta",
    "comparandMeta",
    "area",
  );

  return (
    <LongTermAveragesGraph
      {...graphProps}
      getMetadata={getMetadata}
      dataToGraphSpec={dataToGraphSpec}
    />
  );
}