react-native-charts-wrapper
Version:
A react-native charts support both android and iOS.
264 lines (247 loc) • 7.36 kB
JavaScript
import PropTypes from "prop-types";
import ChartDataSetConfig from "./ChartDataSetConfig";
const lineData = PropTypes.shape({
dataSets: PropTypes.arrayOf(
PropTypes.shape({
values: PropTypes.arrayOf(
PropTypes.oneOfType([
PropTypes.shape({
x: PropTypes.number,
y: PropTypes.number.isRequired,
marker: PropTypes.string,
icon: PropTypes.shape({
bundle: PropTypes.object,
width: PropTypes.number,
height: PropTypes.number
})
}),
PropTypes.number
])
),
label: PropTypes.string.isRequired,
config: PropTypes.shape({
...ChartDataSetConfig.common,
...ChartDataSetConfig.barLineScatterCandleBubble,
...ChartDataSetConfig.lineScatterCandleRadar,
...ChartDataSetConfig.lineRadar,
circleRadius: PropTypes.number,
drawCircles: PropTypes.bool,
mode: PropTypes.oneOf([
"LINEAR",
"STEPPED",
"CUBIC_BEZIER",
"HORIZONTAL_BEZIER"
]),
drawCubicIntensity: PropTypes.number,
circleColor: PropTypes.number,
circleColors: PropTypes.arrayOf(PropTypes.number),
circleHoleColor: PropTypes.number,
drawCircleHole: PropTypes.bool,
fillFormatter: PropTypes.shape({
min: PropTypes.number.isRequired,
}),
dashedLine: PropTypes.shape({
lineLength: PropTypes.number.isRequired,
spaceLength: PropTypes.number.isRequired,
phase: PropTypes.number
})
})
})
)
});
const barData = PropTypes.shape({
dataSets: PropTypes.arrayOf(
PropTypes.shape({
values: PropTypes.arrayOf(
PropTypes.oneOfType([
PropTypes.shape({
x: PropTypes.number,
y: PropTypes.oneOfType([
PropTypes.number,
PropTypes.arrayOf(PropTypes.number)
]),
marker: PropTypes.oneOfType([
PropTypes.string,
PropTypes.arrayOf(PropTypes.string)
])
}),
PropTypes.oneOfType([
PropTypes.number,
PropTypes.arrayOf(PropTypes.number)
])
])
),
label: PropTypes.string.isRequired,
config: PropTypes.shape({
...ChartDataSetConfig.common,
...ChartDataSetConfig.barLineScatterCandleBubble,
barShadowColor: PropTypes.number,
highlightAlpha: PropTypes.number, // using android format (0-255), not ios format(0-1), the conversion is x/255
stackLabels: PropTypes.arrayOf(PropTypes.string)
})
})
),
config: PropTypes.shape({
barWidth: PropTypes.number,
group: PropTypes.shape({
fromX: PropTypes.number.isRequired,
groupSpace: PropTypes.number.isRequired,
barSpace: PropTypes.number.isRequired
})
})
});
const bubbleData = PropTypes.shape({
dataSets: PropTypes.arrayOf(
PropTypes.shape({
values: PropTypes.arrayOf(
PropTypes.shape({
x: PropTypes.number,
y: PropTypes.number.isRequired,
size: PropTypes.number.isRequired,
marker: PropTypes.string
})
),
label: PropTypes.string.isRequired,
config: PropTypes.shape({
...ChartDataSetConfig.common,
...ChartDataSetConfig.barLineScatterCandleBubble
})
})
)
});
const candleData = PropTypes.shape({
dataSets: PropTypes.arrayOf(
PropTypes.shape({
values: PropTypes.arrayOf(
PropTypes.shape({
x: PropTypes.number,
shadowH: PropTypes.number.isRequired,
shadowL: PropTypes.number.isRequired,
open: PropTypes.number.isRequired,
close: PropTypes.number.isRequired,
marker: PropTypes.string
})
),
label: PropTypes.string.isRequired,
config: PropTypes.shape({
...ChartDataSetConfig.common,
...ChartDataSetConfig.barLineScatterCandleBubble,
...ChartDataSetConfig.lineScatterCandleRadar,
barSpace: PropTypes.number,
shadowWidth: PropTypes.number,
shadowColor: PropTypes.number,
shadowColorSameAsCandle: PropTypes.bool,
neutralColor: PropTypes.number,
decreasingColor: PropTypes.number,
decreasingPaintStyle: PropTypes.oneOf([
"FILL",
"STROKE",
"FILL_AND_STROKE"
]),
increasingColor: PropTypes.number,
increasingPaintStyle: PropTypes.oneOf([
"FILL",
"STROKE",
"FILL_AND_STROKE"
])
})
})
)
});
const pieData = PropTypes.shape({
dataSets: PropTypes.arrayOf(
PropTypes.shape({
values: PropTypes.arrayOf(
PropTypes.oneOfType([
PropTypes.shape({
value: PropTypes.number.isRequired,
label: PropTypes.string
}),
PropTypes.number
])
),
label: PropTypes.string.isRequired,
config: PropTypes.shape({
...ChartDataSetConfig.common,
sliceSpace: PropTypes.number,
selectionShift: PropTypes.number,
xValuePosition: PropTypes.oneOf(["INSIDE_SLICE", "OUTSIDE_SLICE"]),
yValuePosition: PropTypes.oneOf(["INSIDE_SLICE", "OUTSIDE_SLICE"]),
valueLinePart1Length: PropTypes.number,
valueLinePart2Length: PropTypes.number,
valueLineColor: PropTypes.number,
valueLineWidth: PropTypes.number,
valueLinePart1OffsetPercentage: PropTypes.number,
valueLineVariableLength: PropTypes.bool
})
})
)
});
const radarData = PropTypes.shape({
dataSets: PropTypes.arrayOf(
PropTypes.shape({
values: PropTypes.arrayOf(
PropTypes.oneOfType([
PropTypes.shape({ value: PropTypes.number.isRequired }),
PropTypes.number
])
),
label: PropTypes.string.isRequired,
config: PropTypes.shape({
...ChartDataSetConfig.common,
...ChartDataSetConfig.lineScatterCandleRadar,
...ChartDataSetConfig.lineRadar
})
})
),
labels: PropTypes.arrayOf(PropTypes.string)
});
const scatterData = PropTypes.shape({
dataSets: PropTypes.arrayOf(
PropTypes.shape({
values: PropTypes.arrayOf(
PropTypes.oneOfType([
PropTypes.shape({
x: PropTypes.number,
y: PropTypes.number.isRequired,
marker: PropTypes.string
}),
PropTypes.number
])
),
label: PropTypes.string.isRequired,
config: PropTypes.shape({
...ChartDataSetConfig.common,
...ChartDataSetConfig.barLineScatterCandleBubble,
...ChartDataSetConfig.lineScatterCandleRadar,
scatterShapeSize: PropTypes.number,
scatterShape: PropTypes.oneOf([
"SQUARE",
"CIRCLE",
"TRIANGLE",
"CROSS",
"X"
]),
scatterShapeHoleColor: PropTypes.number,
scatterShapeHoleRadius: PropTypes.number
})
})
)
});
const combinedData = PropTypes.shape({
lineData: lineData,
barData: barData,
scatterData: scatterData,
candleData: candleData,
bubbleData: bubbleData
});
export {
lineData,
barData,
pieData,
bubbleData,
scatterData,
candleData,
radarData,
combinedData
};