Thomas Kaul
10 months ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
32 changed files with
35 additions and
35 deletions
-
apps/api/src/app/account/account.service.ts
-
apps/api/src/app/benchmark/benchmark.service.ts
-
apps/api/src/app/import/import.service.ts
-
apps/api/src/app/order/order.service.ts
-
apps/api/src/app/portfolio/interfaces/current-positions.interface.ts
-
apps/api/src/app/portfolio/interfaces/portfolio-calculator.interface.ts
-
apps/api/src/app/portfolio/interfaces/portfolio-order.interface.ts
-
apps/api/src/app/portfolio/interfaces/transaction-point-symbol.interface.ts
-
apps/api/src/app/portfolio/portfolio-calculator-baln-buy-and-sell-in-two-activities.spec.ts
-
apps/api/src/app/portfolio/portfolio-calculator-baln-buy-and-sell.spec.ts
-
apps/api/src/app/portfolio/portfolio-calculator-baln-buy.spec.ts
-
apps/api/src/app/portfolio/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts
-
apps/api/src/app/portfolio/portfolio-calculator-googl-buy.spec.ts
-
apps/api/src/app/portfolio/portfolio-calculator-msft-buy-with-dividend.spec.ts
-
apps/api/src/app/portfolio/portfolio-calculator-no-orders.spec.ts
-
apps/api/src/app/portfolio/portfolio-calculator-novn-buy-and-sell-partially.spec.ts
-
apps/api/src/app/portfolio/portfolio-calculator-novn-buy-and-sell.spec.ts
-
apps/api/src/app/portfolio/portfolio-calculator.spec.ts
-
apps/api/src/app/portfolio/portfolio-calculator.ts
-
apps/api/src/app/portfolio/portfolio.controller.ts
-
apps/api/src/app/portfolio/portfolio.service.ts
-
apps/api/src/helper/object.helper.ts
-
apps/api/src/services/data-provider/data-provider.service.ts
-
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts
-
apps/client/src/app/pages/portfolio/fire/fire-page.component.ts
-
libs/common/src/lib/helper.ts
-
libs/common/src/lib/interfaces/symbol-metrics.interface.ts
-
libs/common/src/lib/interfaces/timeline-position.interface.ts
-
libs/ui/src/lib/fire-calculator/fire-calculator.service.ts
-
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
-
package.json
-
yarn.lock
|
|
@ -5,7 +5,7 @@ import { Filter } from '@ghostfolio/common/interfaces'; |
|
|
|
|
|
|
|
import { Injectable } from '@nestjs/common'; |
|
|
|
import { Account, Order, Platform, Prisma } from '@prisma/client'; |
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
import { groupBy } from 'lodash'; |
|
|
|
|
|
|
|
import { CashDetails } from './interfaces/cash-details.interface'; |
|
|
|
|
|
@ -26,7 +26,7 @@ import { BenchmarkTrend } from '@ghostfolio/common/types'; |
|
|
|
|
|
|
|
import { Injectable, Logger } from '@nestjs/common'; |
|
|
|
import { SymbolProfile } from '@prisma/client'; |
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
import { format, isSameDay, subDays } from 'date-fns'; |
|
|
|
import { isNumber, last, uniqBy } from 'lodash'; |
|
|
|
import ms from 'ms'; |
|
|
|
|
|
@ -27,7 +27,7 @@ import { |
|
|
|
|
|
|
|
import { Injectable } from '@nestjs/common'; |
|
|
|
import { DataSource, Prisma, SymbolProfile } from '@prisma/client'; |
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
import { endOfToday, format, isAfter, isSameSecond, parseISO } from 'date-fns'; |
|
|
|
import { uniqBy } from 'lodash'; |
|
|
|
import { v4 as uuidv4 } from 'uuid'; |
|
|
|
|
|
@ -21,7 +21,7 @@ import { |
|
|
|
Tag, |
|
|
|
Type as ActivityType |
|
|
|
} from '@prisma/client'; |
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
import { endOfToday, isAfter } from 'date-fns'; |
|
|
|
import { groupBy } from 'lodash'; |
|
|
|
import { v4 as uuidv4 } from 'uuid'; |
|
|
|
|
|
@ -1,6 +1,6 @@ |
|
|
|
import { ResponseError, TimelinePosition } from '@ghostfolio/common/interfaces'; |
|
|
|
|
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
|
|
|
|
export interface CurrentPositions extends ResponseError { |
|
|
|
currentValueInBaseCurrency: Big; |
|
|
|
|
|
@ -1,4 +1,4 @@ |
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
|
|
|
|
import { PortfolioOrder } from './portfolio-order.interface'; |
|
|
|
|
|
|
|
|
|
@ -1,5 +1,5 @@ |
|
|
|
import { DataSource, Tag, Type as ActivityType } from '@prisma/client'; |
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
|
|
|
|
export interface PortfolioOrder { |
|
|
|
currency: string; |
|
|
|
|
|
@ -1,5 +1,5 @@ |
|
|
|
import { DataSource, Tag } from '@prisma/client'; |
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
|
|
|
|
export interface TransactionPointSymbol { |
|
|
|
averagePrice: Big; |
|
|
|
|
|
@ -2,7 +2,7 @@ import { CurrentRateService } from '@ghostfolio/api/app/portfolio/current-rate.s |
|
|
|
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; |
|
|
|
import { parseDate } from '@ghostfolio/common/helper'; |
|
|
|
|
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
|
|
|
|
import { CurrentRateServiceMock } from './current-rate.service.mock'; |
|
|
|
import { PortfolioCalculator } from './portfolio-calculator'; |
|
|
|
|
|
@ -2,7 +2,7 @@ import { CurrentRateService } from '@ghostfolio/api/app/portfolio/current-rate.s |
|
|
|
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; |
|
|
|
import { parseDate } from '@ghostfolio/common/helper'; |
|
|
|
|
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
|
|
|
|
import { CurrentRateServiceMock } from './current-rate.service.mock'; |
|
|
|
import { PortfolioCalculator } from './portfolio-calculator'; |
|
|
|
|
|
@ -2,7 +2,7 @@ import { CurrentRateService } from '@ghostfolio/api/app/portfolio/current-rate.s |
|
|
|
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; |
|
|
|
import { parseDate } from '@ghostfolio/common/helper'; |
|
|
|
|
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
|
|
|
|
import { CurrentRateServiceMock } from './current-rate.service.mock'; |
|
|
|
import { PortfolioCalculator } from './portfolio-calculator'; |
|
|
|
|
|
@ -3,7 +3,7 @@ import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate- |
|
|
|
import { ExchangeRateDataServiceMock } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service.mock'; |
|
|
|
import { parseDate } from '@ghostfolio/common/helper'; |
|
|
|
|
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
|
|
|
|
import { CurrentRateServiceMock } from './current-rate.service.mock'; |
|
|
|
import { PortfolioCalculator } from './portfolio-calculator'; |
|
|
|
|
|
@ -3,7 +3,7 @@ import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate- |
|
|
|
import { ExchangeRateDataServiceMock } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service.mock'; |
|
|
|
import { parseDate } from '@ghostfolio/common/helper'; |
|
|
|
|
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
|
|
|
|
import { CurrentRateServiceMock } from './current-rate.service.mock'; |
|
|
|
import { PortfolioCalculator } from './portfolio-calculator'; |
|
|
|
|
|
@ -3,7 +3,7 @@ import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate- |
|
|
|
import { ExchangeRateDataServiceMock } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service.mock'; |
|
|
|
import { parseDate } from '@ghostfolio/common/helper'; |
|
|
|
|
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
|
|
|
|
import { CurrentRateServiceMock } from './current-rate.service.mock'; |
|
|
|
import { PortfolioCalculator } from './portfolio-calculator'; |
|
|
|
|
|
@ -2,7 +2,7 @@ import { CurrentRateService } from '@ghostfolio/api/app/portfolio/current-rate.s |
|
|
|
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; |
|
|
|
import { parseDate } from '@ghostfolio/common/helper'; |
|
|
|
|
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
|
|
|
|
import { CurrentRateServiceMock } from './current-rate.service.mock'; |
|
|
|
import { PortfolioCalculator } from './portfolio-calculator'; |
|
|
|
|
|
@ -2,7 +2,7 @@ import { CurrentRateService } from '@ghostfolio/api/app/portfolio/current-rate.s |
|
|
|
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; |
|
|
|
import { parseDate } from '@ghostfolio/common/helper'; |
|
|
|
|
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
|
|
|
|
import { CurrentRateServiceMock } from './current-rate.service.mock'; |
|
|
|
import { PortfolioCalculator } from './portfolio-calculator'; |
|
|
|
|
|
@ -2,7 +2,7 @@ import { CurrentRateService } from '@ghostfolio/api/app/portfolio/current-rate.s |
|
|
|
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; |
|
|
|
import { parseDate } from '@ghostfolio/common/helper'; |
|
|
|
|
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
|
|
|
|
import { CurrentRateServiceMock } from './current-rate.service.mock'; |
|
|
|
import { PortfolioCalculator } from './portfolio-calculator'; |
|
|
|
|
|
@ -1,6 +1,6 @@ |
|
|
|
import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; |
|
|
|
|
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
|
|
|
|
import { CurrentRateService } from './current-rate.service'; |
|
|
|
import { PortfolioCalculator } from './portfolio-calculator'; |
|
|
|
|
|
@ -13,7 +13,7 @@ import { |
|
|
|
import { GroupBy } from '@ghostfolio/common/types'; |
|
|
|
|
|
|
|
import { Logger } from '@nestjs/common'; |
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
import { |
|
|
|
addDays, |
|
|
|
addMilliseconds, |
|
|
|
|
|
@ -46,7 +46,7 @@ import { |
|
|
|
} from '@nestjs/common'; |
|
|
|
import { REQUEST } from '@nestjs/core'; |
|
|
|
import { AuthGuard } from '@nestjs/passport'; |
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
import { StatusCodes, getReasonPhrase } from 'http-status-codes'; |
|
|
|
|
|
|
|
import { PortfolioPositionDetail } from './interfaces/portfolio-position-detail.interface'; |
|
|
|
|
|
@ -67,7 +67,7 @@ import { |
|
|
|
Prisma, |
|
|
|
Tag |
|
|
|
} from '@prisma/client'; |
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
import { isUUID } from 'class-validator'; |
|
|
|
import { |
|
|
|
differenceInDays, |
|
|
|
|
|
@ -1,4 +1,4 @@ |
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
import { cloneDeep, isArray, isObject } from 'lodash'; |
|
|
|
|
|
|
|
export function hasNotDefinedValuesInObject(aObject: Object): boolean { |
|
|
|
|
|
@ -20,7 +20,7 @@ import type { Granularity, UserWithSettings } from '@ghostfolio/common/types'; |
|
|
|
|
|
|
|
import { Inject, Injectable, Logger } from '@nestjs/common'; |
|
|
|
import { DataSource, MarketData, SymbolProfile } from '@prisma/client'; |
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
import { eachDayOfInterval, format, isValid } from 'date-fns'; |
|
|
|
import { groupBy, isEmpty, isNumber, uniqWith } from 'lodash'; |
|
|
|
import ms from 'ms'; |
|
|
|
|
|
@ -21,7 +21,7 @@ import { |
|
|
|
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; |
|
|
|
import { Sort, SortDirection } from '@angular/material/sort'; |
|
|
|
import { MatTableDataSource } from '@angular/material/table'; |
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
import { format, parseISO } from 'date-fns'; |
|
|
|
import { isNumber } from 'lodash'; |
|
|
|
import { Subject } from 'rxjs'; |
|
|
|
|
|
@ -5,7 +5,7 @@ import { PortfolioReportRule, User } from '@ghostfolio/common/interfaces'; |
|
|
|
import { hasPermission, permissions } from '@ghostfolio/common/permissions'; |
|
|
|
|
|
|
|
import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; |
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
import { DeviceDetectorService } from 'ngx-device-detector'; |
|
|
|
import { Subject } from 'rxjs'; |
|
|
|
import { takeUntil } from 'rxjs/operators'; |
|
|
|
|
|
@ -1,7 +1,7 @@ |
|
|
|
import * as currencies from '@dinero.js/currencies'; |
|
|
|
import { NumberParser } from '@internationalized/number'; |
|
|
|
import { DataSource, MarketData, Type as ActivityType } from '@prisma/client'; |
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
import { |
|
|
|
getDate, |
|
|
|
getMonth, |
|
|
|
|
|
@ -1,4 +1,4 @@ |
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
|
|
|
|
export interface SymbolMetrics { |
|
|
|
currentValues: { |
|
|
|
|
|
@ -1,5 +1,5 @@ |
|
|
|
import { DataSource, Tag } from '@prisma/client'; |
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
|
|
|
|
export interface TimelinePosition { |
|
|
|
averagePrice: Big; |
|
|
|
|
|
@ -1,5 +1,5 @@ |
|
|
|
import { Injectable } from '@angular/core'; |
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
|
|
|
|
@Injectable() |
|
|
|
export class FireCalculatorService { |
|
|
|
|
|
@ -18,7 +18,7 @@ import { |
|
|
|
ViewChild |
|
|
|
} from '@angular/core'; |
|
|
|
import { DataSource } from '@prisma/client'; |
|
|
|
import Big from 'big.js'; |
|
|
|
import { Big } from 'big.js'; |
|
|
|
import { ChartConfiguration, Tooltip } from 'chart.js'; |
|
|
|
import { LinearScale } from 'chart.js'; |
|
|
|
import { ArcElement } from 'chart.js'; |
|
|
|
|
|
@ -164,7 +164,7 @@ |
|
|
|
"@storybook/angular": "7.6.5", |
|
|
|
"@storybook/core-server": "7.6.5", |
|
|
|
"@trivago/prettier-plugin-sort-imports": "4.3.0", |
|
|
|
"@types/big.js": "6.1.6", |
|
|
|
"@types/big.js": "6.2.2", |
|
|
|
"@types/body-parser": "1.19.2", |
|
|
|
"@types/cache-manager": "3.4.2", |
|
|
|
"@types/color": "3.0.3", |
|
|
|
|
|
@ -6946,10 +6946,10 @@ |
|
|
|
dependencies: |
|
|
|
"@babel/types" "^7.20.7" |
|
|
|
|
|
|
|
"@types/big.js@6.1.6": |
|
|
|
version "6.1.6" |
|
|
|
resolved "https://registry.yarnpkg.com/@types/big.js/-/big.js-6.1.6.tgz#3d417e758483d55345a03a087f7e0c87137ca444" |
|
|
|
integrity sha512-0r9J+Zz9rYm2hOTwiMAVkm3XFQ4u5uTK37xrQMhc9bysn/sf/okzovWMYYIBMFTn/yrEZ11pusgLEaoarTlQbA== |
|
|
|
"@types/big.js@6.2.2": |
|
|
|
version "6.2.2" |
|
|
|
resolved "https://registry.yarnpkg.com/@types/big.js/-/big.js-6.2.2.tgz#69422ec9ef59df1330ccfde2106d9e1159a083c3" |
|
|
|
integrity sha512-e2cOW9YlVzFY2iScnGBBkplKsrn2CsObHQ2Hiw4V1sSyiGbgWL8IyqE3zFi1Pt5o1pdAtYkDAIsF3KKUPjdzaA== |
|
|
|
|
|
|
|
"@types/body-parser@*": |
|
|
|
version "1.19.4" |
|
|
|