Browse Source

Clean up Date.now()

pull/3393/head
Thomas Kaul 1 year ago
parent
commit
175261720a
  1. 4
      apps/api/src/app/portfolio/calculator/portfolio-calculator-test-utils.ts
  2. 34
      apps/api/src/app/portfolio/calculator/portfolio-calculator.ts
  3. 2
      apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-no-orders.spec.ts
  4. 3
      apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts
  5. 26
      libs/common/src/lib/calculation-helper.ts

4
apps/api/src/app/portfolio/calculator/portfolio-calculator-test-utils.ts

@ -2,13 +2,13 @@ export const activityDummyData = {
accountId: undefined, accountId: undefined,
accountUserId: undefined, accountUserId: undefined,
comment: undefined, comment: undefined,
createdAt: new Date(Date.now()), createdAt: new Date(),
currency: undefined, currency: undefined,
feeInBaseCurrency: undefined, feeInBaseCurrency: undefined,
id: undefined, id: undefined,
isDraft: false, isDraft: false,
symbolProfileId: undefined, symbolProfileId: undefined,
updatedAt: new Date(Date.now()), updatedAt: new Date(),
userId: undefined, userId: undefined,
value: undefined, value: undefined,
valueInBaseCurrency: undefined valueInBaseCurrency: undefined

34
apps/api/src/app/portfolio/calculator/portfolio-calculator.ts

@ -97,7 +97,7 @@ export abstract class PortfolioCalculator {
this.dateRange = dateRange; this.dateRange = dateRange;
this.exchangeRateDataService = exchangeRateDataService; this.exchangeRateDataService = exchangeRateDataService;
let dateOfFirstActivity = new Date(Date.now()); let dateOfFirstActivity = new Date();
this.activities = activities this.activities = activities
.map( .map(
@ -114,10 +114,10 @@ export abstract class PortfolioCalculator {
dateOfFirstActivity = date; dateOfFirstActivity = date;
} }
if (isAfter(date, new Date(Date.now()))) { if (isAfter(date, new Date())) {
// Adapt date to today if activity is in future (e.g. liability) // Adapt date to today if activity is in future (e.g. liability)
// to include it in the interval // to include it in the interval
date = endOfDay(new Date(Date.now())); date = endOfDay(new Date());
} }
return { return {
@ -172,7 +172,7 @@ export abstract class PortfolioCalculator {
let endDate = end; let endDate = end;
if (!endDate) { if (!endDate) {
endDate = new Date(Date.now()); endDate = new Date();
if (lastTransactionPoint) { if (lastTransactionPoint) {
endDate = max([endDate, parseDate(lastTransactionPoint.date)]); endDate = max([endDate, parseDate(lastTransactionPoint.date)]);
@ -245,14 +245,14 @@ export abstract class PortfolioCalculator {
dates.push(resetHours(endDate)); dates.push(resetHours(endDate));
// Add dates of last week for fallback // Add dates of last week for fallback
dates.push(subDays(resetHours(new Date(Date.now())), 7)); dates.push(subDays(resetHours(new Date()), 7));
dates.push(subDays(resetHours(new Date(Date.now())), 6)); dates.push(subDays(resetHours(new Date()), 6));
dates.push(subDays(resetHours(new Date(Date.now())), 5)); dates.push(subDays(resetHours(new Date()), 5));
dates.push(subDays(resetHours(new Date(Date.now())), 4)); dates.push(subDays(resetHours(new Date()), 4));
dates.push(subDays(resetHours(new Date(Date.now())), 3)); dates.push(subDays(resetHours(new Date()), 3));
dates.push(subDays(resetHours(new Date(Date.now())), 2)); dates.push(subDays(resetHours(new Date()), 2));
dates.push(subDays(resetHours(new Date(Date.now())), 1)); dates.push(subDays(resetHours(new Date()), 1));
dates.push(resetHours(new Date(Date.now()))); dates.push(resetHours(new Date()));
dates = uniq( dates = uniq(
dates.map((date) => { dates.map((date) => {
@ -690,7 +690,7 @@ export abstract class PortfolioCalculator {
} }
public async getChartData({ public async getChartData({
end = new Date(Date.now()), end = new Date(),
start, start,
step = 1 step = 1
}: { }: {
@ -1185,18 +1185,18 @@ export abstract class PortfolioCalculator {
)?.date; )?.date;
firstAccountBalanceDate = firstAccountBalanceDateString firstAccountBalanceDate = firstAccountBalanceDateString
? parseDate(firstAccountBalanceDateString) ? parseDate(firstAccountBalanceDateString)
: new Date(Date.now()); : new Date();
} catch (error) { } catch (error) {
firstAccountBalanceDate = new Date(Date.now()); firstAccountBalanceDate = new Date();
} }
try { try {
const firstActivityDateString = this.transactionPoints[0].date; const firstActivityDateString = this.transactionPoints[0].date;
firstActivityDate = firstActivityDateString firstActivityDate = firstActivityDateString
? parseDate(firstActivityDateString) ? parseDate(firstActivityDateString)
: new Date(Date.now()); : new Date();
} catch (error) { } catch (error) {
firstActivityDate = new Date(Date.now()); firstActivityDate = new Date();
} }
return min([firstAccountBalanceDate, firstActivityDate]); return min([firstAccountBalanceDate, firstActivityDate]);

2
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator-no-orders.spec.ts

@ -73,7 +73,7 @@ describe('PortfolioCalculator', () => {
userId: userDummyData.id userId: userDummyData.id
}); });
const start = subDays(new Date(Date.now()), 10); const start = subDays(new Date(), 10);
const chartData = await portfolioCalculator.getChartData({ start }); const chartData = await portfolioCalculator.getChartData({ start });

3
apps/api/src/app/portfolio/calculator/twr/portfolio-calculator.ts

@ -161,8 +161,7 @@ export class TWRPortfolioCalculator extends PortfolioCalculator {
start: Date; start: Date;
step?: number; step?: number;
} & AssetProfileIdentifier): SymbolMetrics { } & AssetProfileIdentifier): SymbolMetrics {
const currentExchangeRate = const currentExchangeRate = exchangeRates[format(new Date(), DATE_FORMAT)];
exchangeRates[format(new Date(Date.now()), DATE_FORMAT)];
const currentValues: { [date: string]: Big } = {}; const currentValues: { [date: string]: Big } = {};
const currentValuesWithCurrencyEffect: { [date: string]: Big } = {}; const currentValuesWithCurrencyEffect: { [date: string]: Big } = {};
let fees = new Big(0); let fees = new Big(0);

26
libs/common/src/lib/calculation-helper.ts

@ -36,48 +36,36 @@ export function getIntervalFromDateRange(
aDateRange: DateRange, aDateRange: DateRange,
portfolioStart = new Date(0) portfolioStart = new Date(0)
) { ) {
let endDate = endOfDay(new Date(Date.now())); let endDate = endOfDay(new Date());
let startDate = portfolioStart; let startDate = portfolioStart;
switch (aDateRange) { switch (aDateRange) {
case '1d': case '1d':
startDate = max([ startDate = max([startDate, subDays(resetHours(new Date()), 1)]);
startDate,
subDays(resetHours(new Date(Date.now())), 1)
]);
break; break;
case 'mtd': case 'mtd':
startDate = max([ startDate = max([
startDate, startDate,
subDays(startOfMonth(resetHours(new Date(Date.now()))), 1) subDays(startOfMonth(resetHours(new Date())), 1)
]); ]);
break; break;
case 'wtd': case 'wtd':
startDate = max([ startDate = max([
startDate, startDate,
subDays( subDays(startOfWeek(resetHours(new Date()), { weekStartsOn: 1 }), 1)
startOfWeek(resetHours(new Date(Date.now())), { weekStartsOn: 1 }),
1
)
]); ]);
break; break;
case 'ytd': case 'ytd':
startDate = max([ startDate = max([
startDate, startDate,
subDays(startOfYear(resetHours(new Date(Date.now()))), 1) subDays(startOfYear(resetHours(new Date())), 1)
]); ]);
break; break;
case '1y': case '1y':
startDate = max([ startDate = max([startDate, subYears(resetHours(new Date()), 1)]);
startDate,
subYears(resetHours(new Date(Date.now())), 1)
]);
break; break;
case '5y': case '5y':
startDate = max([ startDate = max([startDate, subYears(resetHours(new Date()), 5)]);
startDate,
subYears(resetHours(new Date(Date.now())), 5)
]);
break; break;
case 'max': case 'max':
break; break;

Loading…
Cancel
Save