victory-chart
Version:
Chart Component for Victory
98 lines (77 loc) • 3.58 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:true});var _last2=require("lodash/last");var _last3=_interopRequireDefault(_last2);var _assign2=require("lodash/assign");var _assign3=_interopRequireDefault(_assign2);
var _victoryCore=require("victory-core");function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj};}function _toConsumableArray(arr){if(Array.isArray(arr)){for(var i=0,arr2=Array(arr.length);i<arr.length;i++){arr2[i]=arr[i];}return arr2;}else{return Array.from(arr);}}exports.default=
{
getBaseProps:function getBaseProps(props,fallbackProps){
props=_victoryCore.Helpers.modifyProps(props,fallbackProps,"area");var _getCalculatedValues=
this.getCalculatedValues(props,fallbackProps),scale=_getCalculatedValues.scale,style=_getCalculatedValues.style,data=_getCalculatedValues.data;var _props=
props,interpolation=_props.interpolation,label=_props.label,width=_props.width,height=_props.height,groupComponent=_props.groupComponent;
var dataProps={
groupComponent:groupComponent,
key:"area",
data:data,
scale:scale,
interpolation:_victoryCore.Helpers.evaluateProp(interpolation,data),
style:_victoryCore.Helpers.evaluateStyle(style.data,data)};
var baseProps={
parent:{style:style.parent,width:width,height:height,scale:scale,data:data},
all:{
data:dataProps}};
var text=_victoryCore.Helpers.evaluateProp(label,data);
if(text!==undefined&&text!==null||props.events||props.sharedEvents){
baseProps.all.labels=this.getLabelProps(dataProps,text,style);
}
return baseProps;
},
getLabelProps:function getLabelProps(dataProps,text,calculatedStyle){var
data=dataProps.data,scale=dataProps.scale;
var lastData=(0,_last3.default)(data);
var labelStyle=_victoryCore.Helpers.evaluateStyle(calculatedStyle.labels,data)||{};
var labelPadding=labelStyle.padding||0;
return{
key:"area-label",
x:lastData?scale.x(lastData.x)+labelPadding:0,
y:lastData?scale.y(lastData.y1):0,
y0:lastData?scale.y(lastData.y0):0,
style:labelStyle,
textAnchor:labelStyle.textAnchor||"start",
verticalAnchor:labelStyle.verticalAnchor||"middle",
angle:labelStyle.angle,
data:data,
scale:scale,
text:text};
},
getScale:function getScale(props,fallbackProps){
props=_victoryCore.Helpers.modifyProps(props,fallbackProps,"area");
var range={
x:_victoryCore.Helpers.getRange(props,"x"),
y:_victoryCore.Helpers.getRange(props,"y")};
var domain={
x:_victoryCore.Domain.getDomainWithZero(props,"x"),
y:_victoryCore.Domain.getDomainWithZero(props,"y")};
return{
x:_victoryCore.Scale.getBaseScale(props,"x").domain(domain.x).range(range.x),
y:_victoryCore.Scale.getBaseScale(props,"y").domain(domain.y).range(range.y)};
},
getCalculatedValues:function getCalculatedValues(props){var
theme=props.theme;
var defaultStyles=theme&&theme.area&&theme.area.style?theme.area.style:{};
var style=_victoryCore.Helpers.getStyles(props.style,defaultStyles,"auto","100%");
var scale=this.getScale(props);
var data=this.getDataWithBaseline(props,scale);
return{style:style,data:data,scale:scale};
},
getDataWithBaseline:function getDataWithBaseline(props,scale){
var data=_victoryCore.Data.getData(props);
if(data.length<2){
_victoryCore.Log.warn("Area requires at least two data points.");
data=[];
}
var defaultMin=_victoryCore.Scale.getType(scale.y)==="log"?1/Number.MAX_SAFE_INTEGER:0;
var domainY=scale.y.domain();
var minY=Math.min.apply(Math,_toConsumableArray(domainY))>0?Math.min.apply(Math,_toConsumableArray(domainY)):defaultMin;
return data.map(function(datum){
var y1=datum.y1||datum.y;
var y0=datum.y0||minY;
return(0,_assign3.default)({},datum,{y0:y0,y1:y1});
});
}};