All Downloads are FREE. Search and download functionalities are using the official Maven repository.

components.widgets.Chart.AreaChart.jsx Maven / Gradle / Ivy

The newest version!
import React from 'react'
import map from 'lodash/map'
import {
    AreaChart as Chart,
    CartesianGrid,
    XAxis,
    YAxis,
    Tooltip,
    Area,
    Legend,
} from 'recharts'

import {
    areasTypes,
    cartesianGridTypes,
    chartTypes,
    defaultChartProps,
    legendTypes,
    tooltipTypes,
    XAxisTypes,
    YAxisTypes,
} from './chartPropsTypes'
import { parseData, createDomain } from './utils'

/**
 * График "Зоны"
 * @param layout - layout линий на графики
 * @param stackOffset
 * @param baseValue - базовое значение зоны
 * @param width - длина графика
 * @param height - высота графика
 * @param margin - отступы графика
 * @param XAxis
 * {
 *  hide: флаг скрытия
 *  dataKey: ключ в данных
 *  height: высота
 *  width: длина
 *  orientation: ориентация оси
 *  type: тип оси
 *  allowDecimals: флаг разрешения float
 *  allowDataOverflow: флаг разрешения переполнения данных
 *  allowDuplicatedCategory: флаг разрешения повторябщихся категорий
 *  tickCount: количество делений оси
 *  interval:
 *  padding: отступы от оси
 *  minTickGap: минимальные отступы от tick оси
 *  axisLine:
 *  tickLine:
 *  tickSize:
 *  label: лейбл
 * }
 * @param YAxis
 * {
 *  hide: флаг скрытия
 *  dataKey: ключ в данных
 *  height: высота
 *  width: длина
 *  orientation: ориентация оси
 *  type: тип оси
 *  allowDecimals: флаг разрешения float
 *  allowDataOverflow: флаг разрешения переполнения данных
 *  allowDuplicatedCategory: флаг разрешения повторябщихся категорий
 *  tickCount: количество делений оси
 *  interval:
 *  padding: отступы от оси
 *  minTickGap: минимальные отступы от tick оси
 *  axisLine:
 *  tickLine:
 *  tickSize:
 *  label: лейбл
 * }
 * @param cartesianGrid
 * {
 *  x: координата x грида
 *  y: координата y грида
 *  width: длина грида
 *  height: высота грида
 *  horizontal: флаг отключения горизонтальных линий
 *  vertical: флаг отключения вертикальных линий
 *  horizontalPoints: координаты всех линий по y
 *  verticalPoints: координаты всех линий по x
 *  strokeDasharray: размеры dashed линий
 * }
 * @param tooltip
 * {
 *  separator: разделитель между названием и значением
 *  offset: расстояние между позицией тултипа и активной позицией
 *  filterNull: если значение айтема null | undefined
 *  itemStyle: стили айтема
 *  wrapperStyle: стили обертки
 *  contentStyle: стили контента
 *  labelStyle: стили лейбла
 *  viewBox:
 *  label: лейбл
 * }
 * @param legend
 * {
 *  width: длина легенды
 *  height: высота
 *  layout:
 *  align: горизонтальное выравнивание
 *  verticalAlign: вертикальное выравнивание
 *  iconSize: размер иконок
 *  iconType: тип иконок
 *  margin: отступы
 *  wrapperStyle: стили
 * }
 * @param areas
 * [
 *  {
 *    type: тип зоны
 *    dataKey: ключ в данных
 *    stroke: цвет зоны
 *    legendType: тип легенды
 *    dot: настройка точек
 *    activeDot: настройка активной точки
 *    label: лейбл
 *    layout:
 *    stackId: id для настакивания друг на друга
 *  }
 * ]
 * @param data - данные
 * @return {*}
 * @constructor
 */
function AreaChart({
    layout,
    width,
    height,
    stackOffset,
    baseValue,
    margin,
    XAxis: xaxis,
    YAxis: yaxis,
    cartesianGrid,
    tooltip,
    legend,
    data,
    areas,
}) {
    const domain = createDomain(yaxis)

    return (
        
            
            
            
            
            
            {map(parseData(areas), area => (
                
            ))}
        
    )
}

AreaChart.propTypes = {
    ...chartTypes,
    cartesianGrid: cartesianGridTypes,
    legend: legendTypes,
    XAxis: XAxisTypes,
    YAxis: YAxisTypes,
    tooltip: tooltipTypes,
    areas: areasTypes,
}

AreaChart.defaultProps = defaultChartProps

export default AreaChart




© 2015 - 2024 Weber Informatics LLC | Privacy Policy