UNPKG

victory-chart

Version:
319 lines (266 loc) 12.5 kB
Object.defineProperty(exports,"__esModule",{value:true});var _uniq2=require("lodash/uniq");var _uniq3=_interopRequireDefault(_uniq2);var _partialRight2=require("lodash/partialRight");var _partialRight3=_interopRequireDefault(_partialRight2);var _isFunction2=require("lodash/isFunction");var _isFunction3=_interopRequireDefault(_isFunction2);var _flatten2=require("lodash/flatten");var _flatten3=_interopRequireDefault(_flatten2);var _defaults2=require("lodash/defaults");var _defaults3=_interopRequireDefault(_defaults2);var _assign2=require("lodash/assign");var _assign3=_interopRequireDefault(_assign2); var _react=require("react");var _react2=_interopRequireDefault(_react); var _axis=require("./axis");var _axis2=_interopRequireDefault(_axis); 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= { getData:function getData(props,childComponents){ if(props.data){ return _victoryCore.Data.getData(props); } childComponents=childComponents||_react2.default.Children.toArray(props.children); return this.getDataFromChildren(childComponents); }, getDomain:function getDomain(props,axis,childComponents){ childComponents=childComponents||_react2.default.Children.toArray(props.children); var propsDomain=_victoryCore.Domain.getDomainFromProps(props,axis); if(propsDomain){ return propsDomain; } var dataset=(props.data||props.y)&&_victoryCore.Data.getData(props); var dataDomain=dataset?_victoryCore.Domain.getDomainFromData(props,axis,dataset):[]; var childDomain=this.getDomainFromChildren(props,axis,childComponents); var min=_victoryCore.Collection.getMinValue([].concat(_toConsumableArray(dataDomain),_toConsumableArray(childDomain))); var max=_victoryCore.Collection.getMaxValue([].concat(_toConsumableArray(dataDomain),_toConsumableArray(childDomain))); return _victoryCore.Domain.cleanDomain([min,max],props,axis); }, setAnimationState:function setAnimationState(props,nextProps){ if(!props.animate){ return; } if(props.animate.parentState){ var nodesWillExit=props.animate.parentState.nodesWillExit; var nodesDoneClipPathExit=props.animate.parentState.nodesDoneClipPathExit; var oldProps=nodesWillExit&&!nodesDoneClipPathExit?props:null; this.setState((0,_defaults3.default)({oldProps:oldProps},props.animate.parentState)); }else{ var oldChildren=_react2.default.Children.toArray(props.children); var nextChildren=_react2.default.Children.toArray(nextProps.children);var _Transitions$getIniti= _victoryCore.Transitions.getInitialTransitionState(oldChildren,nextChildren),_nodesWillExit=_Transitions$getIniti.nodesWillExit,nodesWillEnter=_Transitions$getIniti.nodesWillEnter,childrenTransitions=_Transitions$getIniti.childrenTransitions,nodesShouldEnter=_Transitions$getIniti.nodesShouldEnter,nodesShouldLoad=_Transitions$getIniti.nodesShouldLoad,nodesDoneLoad=_Transitions$getIniti.nodesDoneLoad,nodesDoneClipPathLoad=_Transitions$getIniti.nodesDoneClipPathLoad,nodesDoneClipPathEnter=_Transitions$getIniti.nodesDoneClipPathEnter,_nodesDoneClipPathExit=_Transitions$getIniti.nodesDoneClipPathExit; this.setState({ nodesWillExit:_nodesWillExit, nodesWillEnter:nodesWillEnter, nodesShouldEnter:nodesShouldEnter, nodesDoneClipPathEnter:nodesDoneClipPathEnter, nodesDoneClipPathExit:_nodesDoneClipPathExit, childrenTransitions:_victoryCore.Collection.isArrayOfArrays(childrenTransitions)? childrenTransitions[0]:childrenTransitions, nodesShouldLoad:nodesShouldLoad||this.state.nodesShouldLoad, nodesDoneLoad:nodesDoneLoad||this.state.nodesDoneLoad, nodesDoneClipPathLoad:nodesDoneClipPathLoad||this.state.nodesDoneClipPathLoad, oldProps:_nodesWillExit&&!_nodesDoneClipPathExit?props:null}); } }, getAnimationProps:function getAnimationProps(props,child,index){var _this=this; if(!props.animate){ return child.props.animate; } var getFilteredState=function getFilteredState(){ var childrenTransitions=_this.state&&_this.state.childrenTransitions; childrenTransitions=_victoryCore.Collection.isArrayOfArrays(childrenTransitions)? childrenTransitions[index]:childrenTransitions; return(0,_defaults3.default)({childrenTransitions:childrenTransitions},_this.state); }; var getTransitions=props.animate&&props.animate.getTransitions; var state=getFilteredState(); var parentState=props.animate&&props.animate.parentState||state; if(!getTransitions){ var getTransitionProps=_victoryCore.Transitions.getTransitionPropsFactory( props, state, function(newState){return _this.setState(newState);}); getTransitions=(0,_partialRight3.default)(getTransitionProps,index); } return(0,_defaults3.default)({getTransitions:getTransitions,parentState:parentState},props.animate,child.props.animate); }, getDomainFromChildren:function getDomainFromChildren(props,axis,childComponents){ var childDomains=[]; var childDomainsLength=0; var children=childComponents? childComponents.slice(0): _react2.default.Children.toArray(props.children); var childrenLength=children.length; var horizontalChildren=childComponents.some(function(child){return child.props.horizontal;}); var horizontal=props&&props.horizontal||horizontalChildren.length>0; var currentAxis=_axis2.default.getCurrentAxis(axis,horizontal); while(childrenLength>0){ var child=children[--childrenLength]; if(child.type&&(0,_isFunction3.default)(child.type.getDomain)){ var parentData=props.data?_victoryCore.Data.getData(props,axis):undefined; var sharedProps=parentData? (0,_assign3.default)({},child.props,{data:parentData}):child.props; var childDomain=child.props&&child.type.getDomain(sharedProps,currentAxis); if(childDomain){ var childDomainLength=childDomain.length; for(var index=0;index<childDomainLength;index++){ childDomains[childDomainsLength++]=childDomain[index]; } } }else if(child.props&&child.props.children){ var newChildren=_react2.default.Children.toArray(child.props.children); var newChildrenLength=newChildren.length; for(var _index=0;_index<newChildrenLength;_index++){ children[childrenLength++]=newChildren[_index]; } } } var min=_victoryCore.Collection.getMinValue(childDomains); var max=_victoryCore.Collection.getMaxValue(childDomains); return childDomains.length===0? [0,1]:[min,max]; }, getDataFromChildren:function getDataFromChildren(props,childComponents){ var getData=function getData(childProps){ var data=_victoryCore.Data.getData(childProps); return Array.isArray(data)&&data.length>0?data:undefined; }; var children=childComponents? childComponents.slice(0).reverse(): _react2.default.Children.toArray(props.children).reverse(); var childrenLength=children.length; var dataArr=[]; var dataArrLength=0; while(childrenLength>0){ var child=children[--childrenLength]; if(child.type&&(0,_isFunction3.default)(child.type.getData)){ dataArr[dataArrLength++]=child.props&&child.type.getData(child.props); }else if(child.props&&child.props.children){ var newChildren=_react2.default.Children.toArray(child.props.children); var newChildrenLength=newChildren.length; for(var index=0;index<newChildrenLength;index++){ children[childrenLength++]=newChildren[index]; } }else{ dataArr[dataArrLength++]=getData(child.props); } } return dataArr; }, getStackedDomain:function getStackedDomain(props,axis){ var propsDomain=_victoryCore.Domain.getDomainFromProps(props,axis); if(propsDomain){ return propsDomain; }var horizontal=props.horizontal; var ensureZero=function ensureZero(domain){ var isDependent=axis==="y"&&!horizontal||axis==="x"&&horizontal; return isDependent? [_victoryCore.Collection.getMinValue(domain,0),_victoryCore.Collection.getMaxValue(domain,0)]:domain; }; var datasets=this.getDataFromChildren(props); return ensureZero(_victoryCore.Domain.getDomainFromGroupedData(props,axis,datasets)); }, getColor:function getColor(calculatedProps,child,index){var style=calculatedProps.style;var colorScale=calculatedProps.colorScale,color=calculatedProps.color; if(style&&style.data&&style.data.fill){ return style.data.fill; } colorScale=child.props&&child.props.colorScale?child.props.colorScale:colorScale; color=child.props&&child.props.color?child.props.color:color; if(!colorScale&&!color){ return undefined; } var colors=Array.isArray(colorScale)? colorScale:_victoryCore.Style.getColorScale(colorScale); return color||colors[index%colors.length]; }, getChildStyle:function getChildStyle(child,index,calculatedProps){var style=calculatedProps.style; var role=child.type&&child.type.role; var defaultFill=role==="stack"? undefined:this.getColor(calculatedProps,child,index); var defaultColor=role==="line"? {fill:"none",stroke:defaultFill}:{fill:defaultFill}; var childStyle=child.props.style||{}; var dataStyle=(0,_defaults3.default)({},childStyle.data,(0,_assign3.default)({},style.data,defaultColor)); var labelsStyle=(0,_defaults3.default)({},childStyle.labels,style.labels); return{ parent:style.parent, data:dataStyle, labels:labelsStyle}; }, getStringsFromCategories:function getStringsFromCategories(childComponents,axis){ var strings=[]; var stringsLength=0; var children=childComponents.slice(0).reverse(); var childrenLength=children.length; while(childrenLength>0){ var child=children[--childrenLength]; if(child.props&&child.props.categories){ var newStrings=_victoryCore.Data.getStringsFromCategories(child.props,axis); var newStringsLength=newStrings.length; for(var index=0;index<newStringsLength;index++){ strings[stringsLength++]=newStrings[index]; } }else if(child.props&&child.props.children){ var newChildren=_react2.default.Children.toArray(child.props.children); var newChildrenLength=newChildren.length; for(var _index2=0;_index2<newChildrenLength;_index2++){ children[childrenLength++]=newChildren[_index2]; } } } return strings; }, getStringsFromData:function getStringsFromData(childComponents,axis){ var strings=[]; var stringsLength=0; var children=childComponents.slice(0).reverse(); var childrenLength=children.length; while(childrenLength>0){ var child=children[--childrenLength]; if(child.props&&child.props.data){ var newStrings=_victoryCore.Data.getStringsFromData(child.props,axis); var newStringsLength=newStrings.length; for(var index=0;index<newStringsLength;index++){ strings[stringsLength++]=newStrings[index]; } }else if(child.type&&(0,_isFunction3.default)(child.type.getData)){ var data=(0,_flatten3.default)(child.type.getData(child.props)); var attr=axis==="x"?"xName":"yName"; for(var _index3=0;_index3<data.length;_index3++){ var datum=data[_index3]; if(datum[attr]){ strings[stringsLength++]=datum[attr]; } } }else if(child.props&&child.props.children){ var newChildren=_react2.default.Children.toArray(child.props.children); var newChildrenLength=newChildren.length; for(var _index4=0;_index4<newChildrenLength;_index4++){ children[childrenLength++]=newChildren[_index4]; } } } return strings; }, getStringsFromChildren:function getStringsFromChildren(props,axis,childComponents){ childComponents=childComponents||_react2.default.Children.toArray(props.children); var axisComponent=_axis2.default.getAxisComponent(childComponents,axis); var axisStrings=axisComponent?_victoryCore.Data.getStringsFromAxes(axisComponent.props,axis):[]; var categoryStrings=this.getStringsFromCategories(childComponents,axis); var dataStrings=this.getStringsFromData(childComponents,axis); return(0,_uniq3.default)((0,_flatten3.default)([].concat(_toConsumableArray(categoryStrings),_toConsumableArray(dataStrings),_toConsumableArray(axisStrings)))); }, getCategories:function getCategories(props,axis){ var categories=_victoryCore.Data.getCategories(props,axis)|| this.getStringsFromChildren(props,axis); return categories.length>0?categories:undefined; }, getY0:function getY0(datum,index,calculatedProps){var datasets=calculatedProps.datasets; var y=datum.y; var previousDataSets=datasets.slice(0,index); var previousPoints=previousDataSets.reduce(function(prev,dataset){ return prev.concat(dataset. filter(function(previousDatum){return datum.x instanceof Date? previousDatum.x.getTime()===datum.x.getTime(): previousDatum.x===datum.x;}). map(function(previousDatum){return previousDatum.y||0;})); },[]); var y0=previousPoints.length&&previousPoints.reduce(function(memo,value){ var sameSign=y<0&&value<0||y>=0&&value>=0; return sameSign?+value+memo:memo; },0); return previousPoints.some(function(point){return point instanceof Date;})?new Date(y0):y0; }};