Add historical price chart

This commit is contained in:
2018-04-11 19:03:55 +05:30
parent 926099af34
commit f390841097
3 changed files with 71 additions and 8 deletions
+3 -1
View File
@@ -17,6 +17,8 @@
], ],
"react/jsx-boolean-value": "off", "react/jsx-boolean-value": "off",
"react/sort-comp": "off", "react/sort-comp": "off",
"jsx-a11y/interactive-supports-focus": "off" "jsx-a11y/interactive-supports-focus": "off",
"react/prop-types": "off",
"no-plusplus": "off"
} }
} }
@@ -12,6 +12,7 @@ class PortfolioBuilderApp extends Component {
this.allScripPrices = data.price; this.allScripPrices = data.price;
this.allScripEPS = data.eps; this.allScripEPS = data.eps;
this.allScripHistorical = data.historical;
this.state = { this.state = {
portfolioScripPrices: { portfolioScripPrices: {
@@ -106,6 +107,7 @@ class PortfolioBuilderApp extends Component {
<PortfolioManager <PortfolioManager
allScripEPS={this.allScripEPS} allScripEPS={this.allScripEPS}
portfolioScripPrices={this.state.portfolioScripPrices} portfolioScripPrices={this.state.portfolioScripPrices}
allScripHistorical={this.allScripHistorical}
portfolioScripCounts={this.state.portfolioScripCounts} portfolioScripCounts={this.state.portfolioScripCounts}
addScripToPortfolio={this.addScripToPortfolio} addScripToPortfolio={this.addScripToPortfolio}
removeScripFromPortfolio={this.removeScripFromPortfolio} removeScripFromPortfolio={this.removeScripFromPortfolio}
@@ -1,12 +1,17 @@
/* eslint-disable react/prefer-stateless-function */ /* eslint-disable react/prefer-stateless-function */
import React, { Component } from 'react'; import React, { Component } from 'react';
import FusionCharts from 'fusioncharts';
import Charts from 'fusioncharts/fusioncharts.charts';
import ReactFC from 'react-fusioncharts';
import Ocean from 'fusioncharts/themes/fusioncharts.theme.ocean';
import './PortfolioManager.css'; import './PortfolioManager.css';
import { SectionTitle } from '../SectionTitle'; import { SectionTitle } from '../SectionTitle';
// Pass fusioncharts as a dependency of charts
Charts(FusionCharts);
Ocean(FusionCharts);
class PortfolioManager extends Component { class PortfolioManager extends Component {
constructor() {
super();
}
calcNetWorth() { calcNetWorth() {
let netWorth = 0; let netWorth = 0;
@@ -53,6 +58,61 @@ class PortfolioManager extends Component {
return weight; return weight;
} }
calcPriceChartData() {
const portfolioScripCounts = this.props.portfolioScripCounts;
const allScripHistorical = this.props.allScripHistorical;
const portfolioScripNames = Object.keys(portfolioScripCounts);
const chartData = [];
if (portfolioScripNames.length > 0) {
const dateCount = allScripHistorical[portfolioScripNames[0]].point.length;
for (let dateIndex = 0; dateIndex < dateCount; dateIndex++) {
let datePriceSum = 0;
portfolioScripNames.forEach((scripName) => {
const tmpPrice = allScripHistorical[scripName].point[dateIndex].price;
const count = portfolioScripCounts[scripName];
datePriceSum += (tmpPrice * count);
});
chartData.push({
label: dateIndex.toString(),
value: datePriceSum,
});
}
}
return chartData;
}
calcHistoricalChartConfig() {
const tmpDataSource = {
chart: {
numberPrefix: '₹',
chartLeftMargin: 0,
chartRightMargin: 0,
showValues: 0,
setAdaptiveYMin: 1,
theme: 'ocean',
},
data: this.calcPriceChartData(),
};
const chartConfigs = {
type: 'area2d',
width: '100%',
height: 300,
dataFormat: 'json',
dataSource: tmpDataSource,
};
return chartConfigs;
}
renderPortfolioEditor() { renderPortfolioEditor() {
const portfolioScripPrices = this.props.portfolioScripPrices; const portfolioScripPrices = this.props.portfolioScripPrices;
const portfolioScripCounts = this.props.portfolioScripCounts; const portfolioScripCounts = this.props.portfolioScripCounts;
@@ -72,9 +132,7 @@ class PortfolioManager extends Component {
<div className="section-weight"> <div className="section-weight">
WEIGHT WEIGHT
</div> </div>
<div className="section-remove-btn"> <div className="section-remove-btn" />
</div>
<div className="clearfix" /> <div className="clearfix" />
</div> </div>
<div className="editor-body"> <div className="editor-body">
@@ -143,6 +201,7 @@ class PortfolioManager extends Component {
</div> </div>
<div className="overview-body"> <div className="overview-body">
<div className="overview-chart"> <div className="overview-chart">
<ReactFC {...this.calcHistoricalChartConfig()} />
</div> </div>
<div className="overview-details"> <div className="overview-details">
<div className="overview-card card-stocks"> <div className="overview-card card-stocks">
@@ -195,7 +254,7 @@ class PortfolioManager extends Component {
<div className="body"> <div className="body">
{this.renderPortfolioEditor()} {this.renderPortfolioEditor()}
{this.renderPortfolioOverview()} {this.renderPortfolioOverview()}
<div className="clearfix"></div> <div className="clearfix" />
</div> </div>
</div> </div>