ignore missing values

pull/239/head
Valentin Zickner 3 years ago committed by Thomas
parent 8e4ee7feea
commit cbe079ae66

@ -169,7 +169,10 @@ export class PortfolioCalculator {
) { ) {
j++; j++;
} }
timelinePeriodPromises.push(this.getTimePeriodForDate(j, currentDate)); const timePeriodForDate = this.getTimePeriodForDate(j, currentDate);
if (timePeriodForDate != null) {
timelinePeriodPromises.push(timePeriodForDate);
}
} }
console.timeEnd('calculate-timeline-calculations'); console.timeEnd('calculate-timeline-calculations');
@ -185,7 +188,10 @@ export class PortfolioCalculator {
return timelinePeriods; return timelinePeriods;
} }
private async getTimePeriodForDate(j: number, currentDate: Date) { private async getTimePeriodForDate(
j: number,
currentDate: Date
): Promise<TimelinePeriod> {
let investment: Big = new Big(0); let investment: Big = new Big(0);
const promises = []; const promises = [];
if (j >= 0) { if (j >= 0) {
@ -204,10 +210,19 @@ export class PortfolioCalculator {
} }
} }
const value = (await Promise.all(promises)).reduce( const result = await Promise.all(promises).catch((e) => {
(a, b) => a.add(b), console.error(
new Big(0) `failed to fetch info for date ${currentDate} with exception`,
e
); );
return null;
});
if (result == null) {
return null;
}
const value = result.reduce((a, b) => a.add(b), new Big(0));
return { return {
date: format(currentDate, DATE_FORMAT), date: format(currentDate, DATE_FORMAT),
grossPerformance: value.minus(investment), grossPerformance: value.minus(investment),

@ -26,7 +26,6 @@ import Big from 'big.js';
import { import {
add, add,
addMonths, addMonths,
endOfToday,
format, format,
getDate, getDate,
getMonth, getMonth,
@ -43,7 +42,6 @@ import {
subDays, subDays,
subYears subYears
} from 'date-fns'; } from 'date-fns';
import { port } from 'envalid';
import { isEmpty } from 'lodash'; import { isEmpty } from 'lodash';
import * as roundTo from 'round-to'; import * as roundTo from 'round-to';
@ -204,7 +202,9 @@ export class PortfolioService {
format(new Date(), dateFormat) format(new Date(), dateFormat)
); );
return timeline.map((timelineItem) => ({ return timeline
.filter((timelineItem) => timelineItem !== null)
.map((timelineItem) => ({
date: timelineItem.date, date: timelineItem.date,
value: timelineItem.grossPerformance, value: timelineItem.grossPerformance,
marketPrice: timelineItem.value marketPrice: timelineItem.value

Loading…
Cancel
Save