{"version":3,"sources":["webpack:///./src/routes/dcapools/dcapools.ts"],"names":["DCAPools","dialogService","ts","store","toast","controllerFactory","i18n","taskQueue","ss","loading","loadingDCA","chartDataBuy","chartDataSell","dswapEnabled","dswapPaused","maxSlippageInputToken","maxSlippageOutputToken","dcaRecurrenceTypeAmount","dcaOrderNo","recurrenceTypeValues","this","validationController","createForCurrentScope","renderer","addRenderer","storeSubscription","state","subscribe","user","firebaseUser","loggedIn","symbol","transactionType","pools","supportedTokens","getDSwapTokens","Hive","enrichTokensWithUserBalancesDcaPools","mappedMarketPools","getMappedMarketPools","refreshTokenLists","createValidationRules","buyTokenSymbol","buyTokenSelected","sellTokenSymbol","sellTokenSelected","activePageId","currentChainId","queueTask","call","$","selectpicker","marketMakerFeeToken","EXCHANGE_URL_HE","t","find","x","metadata","icon","endsWith","refreshSelectPicker","dswapDcaFee","dcaTradesActive","getActiveDCARequests","dcaTradesHistory","getHistoricalDCARequests","validationResult","validate","result","results","valid","message","tr","rule","messageKey","buyTokenAmount","sellTokenAmount","sellTokenBalance","sellToken","userBalance","balance","dcaTradeValueUsd","metrics","parseFloat","lastPriceUsd","ns","error","swapRequestDcaModel","Account","account","name","Chain","ChainTransactionId","TokenOutput","TokenInput","TokenInputAmount","SwapSourceId","DSWAP_SOURCE_ID","TokenInputMemo","RecurrenceType","recurrenceTypeValue","RecurrenceTypeAmount","OrderCount","DCAType","PoolsDCA","PoolTokenPair","poolTokenPair","open","viewModel","model","whenClosed","response","wasCancelled","loadDcaActive","buyTokens","sellTokens","filter","isCrypto","precision","buyToken","token1","token2","sellTokenSymbols","i","length","tokenSymbol","push","j","tokenFound","splice","indexOf","buyTokenSymbols","updateDcaSummary","chartRefBuy","detached","fillPeggedTokenMetrics","enrichTokensWithMetrics","getTokenBalance","calcUnitEstimateRate","token","loadUserBalances","getDSwapTokenBalances","tradePercentage","updateTradeValueUsd","tradeValueUsd","toFixed","getTokenSymbolToCheck","baseTokenSymbol","peggedTokenPrice","lastPrice","chartRefSell","percentage","ohlcData","slice","map","unix","timestamp","format","o","openPrice","h","highestPrice","l","lowestPrice","c","closePrice","num","fixed","re","RegExp","toString","match","tokenSymbolToCheck","tokenToCheck","dcaSellPerOrder","tradesActive","Init","InProgress","timestamp_month_name","CreatedAt","timestamp_day","timestamp_time","timestamp_year","SwapStatusName","SwapStatusId","dcaCancelRequests","d","Id","DCAId","CancelRequested","loadDCARequests","tradesHistory","Success","Failure","SuccessPartial","Cancelled","Expired","sortByStartDate","dcaId","dcaDetail","SwapRequestDCA","LastOrderDateTime","SwapRequests","DCARefunds","timeUntilNextOrder","activateDcaButton","trade","console","log","button","removeClass","addClass","date","Date","getTime","array","sort","a","b","aDate","toDate","bDate","rules","ensure","required","withMessageKey","then","satisfies","value","object","get","isDebug","addObject"],"mappings":"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","file":"app~bd92deae.226c25dd7b76bf2af975.chunk.js","sourcesContent":["import { Redirect } from 'aurelia-router';\r\nimport { ToFixedValueConverter } from 'resources/value-converters/to-fixed';\r\nimport { Subscription } from 'rxjs';\r\nimport { customElement, autoinject, bindable, TaskQueue } from 'aurelia-framework';\r\nimport { DswapOrderDcaModal } from 'modals/dswap-order-dca';\r\nimport { DialogService } from 'aurelia-dialog';\r\nimport { Store, dispatchify } from 'aurelia-store';\r\nimport { ChartComponent } from 'components/chart/chart';\r\nimport { loadTokenMarketHistory, loadBuyBook, loadSellBook, loadTokens } from 'common/hive-engine-api';\r\nimport moment from 'moment';\r\nimport { getPrices, usdFormat, getChainByState, getPeggedTokenSymbolByChain, getSwapTokenByCrypto, getPeggedTokenPriceByChain, isNumeric, getSwapStatusById, getNextOrderDateTime } from 'common/functions';\r\nimport { getCurrentFirebaseUser, getMarketMakerUser } from 'store/actions';\r\nimport { TokenService } from 'services/token-service';\r\nimport { ValidationControllerFactory, ControllerValidateResult, ValidationRules } from 'aurelia-validation';\r\nimport { ToastService, ToastMessage } from 'services/toast-service';\r\nimport { BootstrapFormRenderer } from 'resources/bootstrap-form-renderer';\r\nimport { I18N } from 'aurelia-i18n';\r\nimport { environment } from 'environment';\r\nimport { Chain, DCAType, SwapStatus } from 'common/enums';\r\nimport { SwapService } from 'services/swap-service';\r\nimport { env } from 'process';\r\nimport { getDCACancelRequests, getSwapDCADetail, getSwapDCARequests } from 'common/dswap-api';\r\nimport { DswapSwapdetailsModal } from 'modals/dswap-swapdetails';\r\nimport { DswapOrderDcaCancelModal } from 'modals/dswap-order-dca-cancel';\r\n\r\n@autoinject()\r\n@customElement('dcapools')\r\nexport class DCAPools {\r\n public storeSubscription: Subscription;\r\n public state: IState;\r\n public buyTokens: IToken[];\r\n @bindable() sellTokens: IToken[];\r\n public buyTokenSymbol;\r\n public sellTokenSymbol;\r\n @bindable() sellTokenAmount;\r\n @bindable() buyTokenAmount;\r\n public buyToken : IToken;\r\n public sellToken : IToken;\r\n private unitEstimateRate;\r\n private tradeValueUsd;\r\n private loggedIn;\r\n @bindable() tradePercentage;\r\n @bindable() loading = false;\r\n @bindable() loadingDCA = false;\r\n \r\n private chartRefBuy: ChartComponent;\r\n private chartRefSell: ChartComponent;\r\n\r\n private chartDataBuy: any = {};\r\n private chartDataSell: any = {};\r\n private user;\r\n private validationController;\r\n private renderer; \r\n private dswapEnabled = false;\r\n private dswapPaused = false;\r\n private currentChainId;\r\n private baseTokenSymbol;\r\n private baseTokenAmount;\r\n private maxSlippageInputToken = 5.00;\r\n private maxSlippageOutputToken = 5.00;\r\n private recurrenceTypeValue;\r\n @bindable() dcaRecurrenceTypeAmount = 1;\r\n @bindable() dcaOrderNo = 2;\r\n private recurrenceTypeValues: string[] = [\"minute\", \"hour\", \"day\", \"week\", \"month\" ];\r\n private dcaSellPerOrder;\r\n private dswapDcaFee;\r\n @bindable() dcaTradesActive: ISwapRequestDCAViewModel[];\r\n @bindable() dcaTradesHistory: ISwapRequestDCAViewModel[];\r\n @bindable() dcaDetail: ISwapRequestDCADetailViewModel;\r\n private mappedMarketPools;\r\n private supportedTokens;\r\n private poolTokenPair;\r\n @bindable() timeUntilNextOrder;\r\n\r\n constructor(private dialogService: DialogService, \r\n private ts: TokenService, \r\n private store: Store, \r\n private toast: ToastService, \r\n private controllerFactory: ValidationControllerFactory, \r\n private i18n: I18N,\r\n private taskQueue: TaskQueue,\r\n private ss: SwapService) {\r\n this.validationController = controllerFactory.createForCurrentScope();\r\n\r\n this.renderer = new BootstrapFormRenderer();\r\n this.validationController.addRenderer(this.renderer);\r\n this.storeSubscription = this.store.state.subscribe(state => {\r\n if (state) {\r\n this.state = state;\r\n \r\n this.user = { ...state.firebaseUser };\r\n this.loggedIn = state.loggedIn;\r\n }\r\n }); \r\n }\r\n\r\n async canActivate({ symbol, transactionType }) { \r\n try {\r\n if (!this.state.pools) {\r\n this.supportedTokens = await this.ts.getDSwapTokens(true, Chain.Hive, true);\r\n await this.ts.enrichTokensWithUserBalancesDcaPools(this.supportedTokens);\r\n }\r\n \r\n this.mappedMarketPools = await this.ts.getMappedMarketPools();\r\n\r\n await dispatchify(getCurrentFirebaseUser)();\r\n await dispatchify(getMarketMakerUser)();\r\n\r\n this.refreshTokenLists();\r\n this.createValidationRules();\r\n\r\n if (symbol && transactionType) {\r\n if (transactionType === \"buy\") {\r\n this.buyTokenSymbol = symbol;\r\n await this.buyTokenSelected();\r\n } else if (transactionType === \"sell\") {\r\n this.sellTokenSymbol = symbol;\r\n await this.sellTokenSelected();\r\n }\r\n }\r\n\r\n this.state.activePageId = \"dcapools\";\r\n this.currentChainId = await getChainByState(this.state); \r\n } catch {\r\n return new Redirect('');\r\n }\r\n }\r\n\r\n async refreshSelectPicker() {\r\n this.taskQueue.queueTask({\r\n call: () => $('.selectpicker').selectpicker(\"refresh\")\r\n }); \r\n }\r\n\r\n tokenImage(symbol) {\r\n if (symbol == environment.marketMakerFeeToken) {\r\n return environment.EXCHANGE_URL_HE + 'images/logo-small.png';\r\n } else {\r\n if (this.supportedTokens) {\r\n var t = this.supportedTokens.find(x => x.symbol === symbol);\r\n if (t) {\r\n return t.metadata.icon.endsWith('.svg') ? t.metadata.icon : `https://images.hive.blog/0x0/${t.metadata.icon}`;\r\n }\r\n }\r\n }\r\n }\r\n \r\n async attached() {\r\n this.refreshSelectPicker();\r\n this.dswapEnabled = environment.dswapEnabled;\r\n this.dswapPaused = environment.dswapPaused;\r\n this.dswapDcaFee = environment.dswapDcaFee + '%';\r\n this.dcaTradesActive = await this.getActiveDCARequests();\r\n this.dcaTradesHistory = await this.getHistoricalDCARequests();\r\n }\r\n\r\n async startTrade() {\r\n const validationResult: ControllerValidateResult = await this.validationController.validate();\r\n \r\n for (const result of validationResult.results) { \r\n if (!result.valid) {\r\n const toast = new ToastMessage();\r\n\r\n toast.message = this.i18n.tr(result.rule.messageKey, {\r\n buyTokenSymbol: this.buyTokenSymbol,\r\n sellTokenSymbol: this.sellTokenSymbol,\r\n buyTokenAmount: this.buyTokenAmount,\r\n sellTokenAmount: this.sellTokenAmount,\r\n sellTokenBalance: this.sellToken != null ? (this.sellToken.userBalance != null ? this.sellToken.userBalance.balance : 0) : 0,\r\n dcaTradeValueUsd: this.sellToken != null && this.sellToken.metrics != null ? parseFloat(this.sellToken.metrics.lastPriceUsd) * this.sellTokenAmount : \"\",\r\n ns: 'errors' \r\n });\r\n \r\n this.toast.error(toast);\r\n }\r\n }\r\n\r\n if (validationResult.valid) {\r\n let swapRequestDcaModel: ISwapRequestDCAModel = {\r\n Account: this.state.account.name,\r\n Chain: Chain.Hive,\r\n ChainTransactionId: \"\",\r\n TokenOutput: this.buyTokenSymbol,\r\n TokenInput: this.sellTokenSymbol,\r\n TokenInputAmount: this.sellTokenAmount,\r\n SwapSourceId: environment.DSWAP_SOURCE_ID,\r\n TokenInputMemo: \"\",\r\n RecurrenceType: this.recurrenceTypeValue,\r\n RecurrenceTypeAmount: this.dcaRecurrenceTypeAmount,\r\n OrderCount: this.dcaOrderNo,\r\n DCAType: DCAType.PoolsDCA,\r\n PoolTokenPair: this.poolTokenPair\r\n }; \r\n\r\n this.loading = true;\r\n this.dialogService.open({ viewModel: DswapOrderDcaModal, model: swapRequestDcaModel }).whenClosed(response => { \r\n this.loading = false;\r\n if (!response.wasCancelled) {\r\n this.loadDcaActive(); \r\n }\r\n });\r\n }\r\n }\r\n\r\n async refreshTokenLists(){\r\n if (!this.state.pools || !this.supportedTokens) {\r\n this.supportedTokens = await this.ts.getDSwapTokens(true, Chain.Hive, true); \r\n await this.ts.enrichTokensWithUserBalancesDcaPools(this.supportedTokens);\r\n } \r\n\r\n this.buyTokens = [...this.supportedTokens];\r\n this.sellTokens = [...this.supportedTokens];\r\n\r\n // filter out crypto from buy token list for now\r\n // filter out 0 precision tokens to prevent loss\r\n this.buyTokens = this.buyTokens.filter(x => !x.isCrypto && x.precision != 0);\r\n this.sellTokens = this.sellTokens.filter(x => x.precision != 0);\r\n \r\n if (this.buyToken) {\r\n let pools = this.state.pools.filter(x => x.token1 == this.buyToken.symbol || x.token2 == this.buyToken.symbol);\r\n\r\n this.sellTokens = [];\r\n let sellTokenSymbols = [];\r\n for (let i = 0; i < pools.length; i++) {\r\n let tokenSymbol = \"\";\r\n if (pools[i].token1 != this.buyToken.symbol) {\r\n tokenSymbol = pools[i].token1;\r\n } else if (pools[i].token2 != this.buyToken.symbol) {\r\n tokenSymbol = pools[i].token2;\r\n }\r\n\r\n if (tokenSymbol != \"\")\r\n sellTokenSymbols.push(tokenSymbol);\r\n }\r\n\r\n if (sellTokenSymbols.length > 0) {\r\n for (let j = 0; j < sellTokenSymbols.length; j++) {\r\n let tokenFound = this.supportedTokens.find(x => x.symbol == sellTokenSymbols[j]);\r\n if (tokenFound)\r\n this.sellTokens.push(tokenFound);\r\n }\r\n }\r\n \r\n this.sellTokens.splice(this.sellTokens.indexOf(this.sellTokens.find(x => x.symbol == this.buyToken.symbol)), 1);\r\n }\r\n\r\n if (this.sellToken) {\r\n let pools = this.state.pools.filter(x => x.token1 == this.sellToken.symbol || x.token2 == this.sellToken.symbol);\r\n\r\n this.buyTokens = [];\r\n let buyTokenSymbols = [];\r\n for (let i = 0; i < pools.length; i++) {\r\n let tokenSymbol = \"\";\r\n if (pools[i].token1 != this.sellToken.symbol) {\r\n tokenSymbol = pools[i].token1;\r\n } else if (pools[i].token2 != this.sellToken.symbol) {\r\n tokenSymbol = pools[i].token2;\r\n }\r\n\r\n if (tokenSymbol != \"\")\r\n buyTokenSymbols.push(tokenSymbol);\r\n }\r\n\r\n if (buyTokenSymbols.length > 0) {\r\n for (let j = 0; j < buyTokenSymbols.length; j++) {\r\n let tokenFound = this.supportedTokens.find(x => x.symbol == buyTokenSymbols[j]);\r\n if (tokenFound)\r\n this.buyTokens.push(tokenFound);\r\n }\r\n }\r\n \r\n this.buyTokens.splice(this.buyTokens.indexOf(this.buyTokens.find(x => x.symbol == this.sellToken.symbol)), 1);\r\n }\r\n\r\n await this.refreshSelectPicker();\r\n }\r\n\r\n async calcUnitEstimateRate() {\r\n if (this.buyToken && this.sellToken) {\r\n //this.unitEstimateRate = (this.buyToken.metrics.lastPrice / this.sellToken.metrics.lastPrice).toFixed(8);\r\n\r\n //await this.updateTradeValueUsd(); \r\n }\r\n }\r\n\r\n async recurrenceTypeSelected(){\r\n\r\n }\r\n\r\n async sellTokenAmountChanged() {\r\n this.updateDcaSummary();\r\n }\r\n\r\n async buyTokenSelected() { \r\n if (this.chartRefBuy)\r\n this.chartRefBuy.detached();\r\n\r\n //this.chartDataBuy = await this.loadTokenHistoryData(this.buyTokenSymbol);\r\n\r\n // if (this.chartRefBuy)\r\n // this.chartRefBuy.attached();\r\n \r\n this.buyToken = this.supportedTokens.find(x => x.symbol == this.buyTokenSymbol);\r\n this.fillPeggedTokenMetrics(this.buyToken);\r\n this.refreshTokenLists();\r\n\r\n if (!this.buyToken.metrics) {\r\n await this.ts.enrichTokensWithMetrics([this.buyToken], [this.buyToken.symbol], Chain.Hive);\r\n }\r\n\r\n if (!this.buyToken.userBalance)\r\n await this.getTokenBalance(this.buyToken);\r\n\r\n if (this.buyTokenAmount && this.buyTokenAmount > 0)\r\n this.buyTokenAmount = 0;\r\n \r\n await this.calcUnitEstimateRate(); \r\n }\r\n\r\n async getTokenBalance(token) { \r\n if (!token || !token.loadUserBalances) {\r\n await this.ts.getDSwapTokenBalances(Chain.Hive);\r\n } \r\n }\r\n\r\n async tradePercentageChanged(){\r\n if (this.buyToken && this.sellToken) {\r\n this.sellTokenAmount = (this.tradePercentage / 100) * this.sellToken.userBalance.balance;\r\n\r\n await this.updateTradeValueUsd();\r\n }\r\n }\r\n\r\n async dcaRecurrenceTypeAmountChanged(){\r\n this.updateDcaSummary();\r\n }\r\n\r\n async dcaOrderNoChanged() {\r\n this.updateDcaSummary();\r\n }\r\n\r\n async updateTradeValueUsd() {\r\n if (this.sellToken.metrics)\r\n this.tradeValueUsd = (this.sellTokenAmount * parseFloat(this.sellToken.metrics.lastPriceUsd)).toFixed(4);\r\n }\r\n\r\n async fillPeggedTokenMetrics(token) {\r\n let symbolToCheck = await this.getTokenSymbolToCheck(token.symbol);\r\n if (symbolToCheck == this.baseTokenSymbol) {\r\n let peggedTokenPrice = await getPeggedTokenPriceByChain(this.currentChainId);\r\n token.metrics = { lastPriceUsd: peggedTokenPrice, lastPrice: peggedTokenPrice };\r\n }\r\n }\r\n\r\n async sellTokenSelected() {\r\n if (this.chartRefSell)\r\n this.chartRefSell.detached();\r\n\r\n // this.chartDataSell = await this.loadTokenHistoryData(this.sellTokenSymbol);\r\n\r\n // if (this.chartRefSell)\r\n // this.chartRefSell.attached();\r\n \r\n this.sellToken = this.supportedTokens.find(x => x.symbol == this.sellTokenSymbol);\r\n\r\n if (!this.sellToken.metrics) {\r\n await this.ts.enrichTokensWithMetrics([this.sellToken], [this.sellToken.symbol], Chain.Hive);\r\n }\r\n\r\n this.fillPeggedTokenMetrics(this.sellToken);\r\n this.refreshTokenLists();\r\n\r\n if (!this.sellToken.userBalance)\r\n await this.getTokenBalance(this.sellToken);\r\n\r\n if (this.sellTokenAmount && this.sellTokenAmount > 0)\r\n this.sellTokenAmount = 0;\r\n\r\n await this.calcUnitEstimateRate(); \r\n }\r\n\r\n async slideTo(percentage) {\r\n this.tradePercentage = percentage;\r\n }\r\n\r\n async loadTokenHistoryData(token) {\r\n const tokenHistory = await loadTokenMarketHistory(token);\r\n const limitCandleStick = 30; // show last 30 days\r\n\r\n const candleStickData = tokenHistory.slice(0, limitCandleStick).map(x => {\r\n return {\r\n t: moment.unix(x.timestamp).format('YYYY-MM-DD HH:mm:ss'), //x.timestamp * 1000,\r\n o: x.openPrice,\r\n h: x.highestPrice,\r\n l: x.lowestPrice,\r\n c: x.closePrice,\r\n };\r\n });\r\n\r\n return { ohlcData: candleStickData };\r\n }\r\n\r\n public toFixed(num, fixed) {\r\n var re = new RegExp('^-?\\\\d+(?:\\.\\\\d{0,' + (fixed || -1) + '})?');\r\n return num.toString().match(re)[0];\r\n }\r\n\r\n async getTokenSymbolToCheck(tokenSymbol) {\r\n let tokenSymbolToCheck = tokenSymbol;\r\n let tokenToCheck = this.supportedTokens.find(x => x.symbol == tokenSymbol);\r\n if (tokenToCheck && tokenToCheck.isCrypto)\r\n tokenSymbolToCheck = getSwapTokenByCrypto(tokenSymbol);\r\n\r\n return tokenSymbolToCheck;\r\n }\r\n\r\n updateDcaSummary() {\r\n this.dcaSellPerOrder = this.sellTokenAmount / this.dcaOrderNo;\r\n }\r\n\r\n // DCA overview & history\r\n async getActiveDCARequests(){ \r\n this.loadingDCA = true;\r\n let tradesActive = await getSwapDCARequests(this.state.account.name, 100, 0, DCAType.PoolsDCA, [SwapStatus.Init, SwapStatus.InProgress]);\r\n for (let t of tradesActive) {\r\n t.timestamp_month_name = moment(t.CreatedAt).format('MMMM');\r\n t.timestamp_day = moment(t.CreatedAt).format('DD');\r\n t.timestamp_time = moment(t.CreatedAt).format('HH:mm');\r\n t.timestamp_year = moment(t.CreatedAt).format('YYYY');\r\n t.SwapStatusName = await getSwapStatusById(t.SwapStatusId);\r\n }\r\n\r\n let dcaCancelRequests = await getDCACancelRequests(this.state.account.name, SwapStatus.Init);\r\n for (let t of tradesActive) {\r\n for (let d of dcaCancelRequests) {\r\n if (t.Id == d.DCAId) {\r\n t.CancelRequested = true;\r\n }\r\n }\r\n }\r\n\r\n this.loadingDCA = false;\r\n \r\n return tradesActive;\r\n }\r\n\r\n async refreshDcaOverview(){\r\n this.loadingDCA = true;\r\n await this.loadDCARequests();\r\n this.loadingDCA = false;\r\n }\r\n\r\n async getHistoricalDCARequests(){\r\n this.loadingDCA = true;\r\n let tradesHistory = await getSwapDCARequests(this.state.account.name, 100, 0, DCAType.PoolsDCA, [SwapStatus.Success, SwapStatus.Failure, SwapStatus.SuccessPartial, SwapStatus.Cancelled, SwapStatus.Expired]);\r\n for (let t of tradesHistory) {\r\n t.timestamp_month_name = moment(t.CreatedAt).format('MMMM');\r\n t.timestamp_day = moment(t.CreatedAt).format('DD');\r\n t.timestamp_time = moment(t.CreatedAt).format('HH:mm');\r\n t.timestamp_year = moment(t.CreatedAt).format('YYYY');\r\n t.SwapStatusName = await getSwapStatusById(t.SwapStatusId);\r\n }\r\n \r\n this.loadingDCA = false;\r\n return this.sortByStartDate(tradesHistory);\r\n } \r\n\r\n async loadDcaData(dcaId) {\r\n let dcaDetail = await getSwapDCADetail(dcaId);\r\n dcaDetail.SwapRequestDCA.LastOrderDateTime = dcaDetail.SwapRequestDCA.CreatedAt;\r\n\r\n if (dcaDetail.SwapRequests){\r\n let i = 0;\r\n for (let t of dcaDetail.SwapRequests) {\r\n if (i == 0)\r\n dcaDetail.SwapRequestDCA.LastOrderDateTime = t.CreatedAt;\r\n\r\n t.timestamp_month_name = moment(t.CreatedAt).format('MMMM');\r\n t.timestamp_day = moment(t.CreatedAt).format('DD');\r\n t.timestamp_time = moment(t.CreatedAt).format('HH:mm');\r\n t.timestamp_year = moment(t.CreatedAt).format('YYYY');\r\n t.SwapStatusName = await getSwapStatusById(t.SwapStatusId);\r\n\r\n i++;\r\n } \r\n } \r\n\r\n if (dcaDetail.DCARefunds) {\r\n for (let t of dcaDetail.DCARefunds) {\r\n t.timestamp_month_name = moment(t.CreatedAt).format('MMMM');\r\n t.timestamp_day = moment(t.CreatedAt).format('DD');\r\n t.timestamp_time = moment(t.CreatedAt).format('HH:mm');\r\n t.timestamp_year = moment(t.CreatedAt).format('YYYY');\r\n t.SwapStatusName = await getSwapStatusById(t.SwapStatusId);\r\n } \r\n }\r\n this.dcaDetail = dcaDetail; \r\n\r\n this.timeUntilNextOrder = getNextOrderDateTime(this.dcaDetail);\r\n \r\n this.activateDcaButton('details'+dcaId);\r\n }\r\n viewSwapDetails(trade) {\r\n this.dialogService.open({ viewModel: DswapSwapdetailsModal, model: trade }).whenClosed(response => {\r\n console.log(response);\r\n });\r\n }\r\n\r\n activateDcaButton(button) {\r\n $(\".btn-dca\").removeClass(\"active\");\r\n $(\"#btn-dca-\"+button).addClass(\"active\");\r\n }\r\n\r\n dcaCancel(trade) {\r\n this.dialogService.open({ viewModel: DswapOrderDcaCancelModal, model: trade }).whenClosed(response => {\r\n console.log(response);\r\n if (!response.wasCancelled) {\r\n this.loadDCARequests();\r\n }\r\n });\r\n }\r\n\r\n async loadDcaActive() {\r\n this.dcaTradesActive = await this.getActiveDCARequests();\r\n }\r\n\r\n async loadDcaHistory() {\r\n this.dcaTradesHistory = await this.getHistoricalDCARequests();\r\n }\r\n\r\n async loadDCARequests(){\r\n this.dcaTradesActive = await this.getActiveDCARequests();\r\n this.dcaTradesHistory = await this.getHistoricalDCARequests();\r\n }\r\n\r\n async refreshMyBalances(){\r\n this.loading = true;\r\n await this.ts.getDSwapTokenBalances(Chain.Hive, true);\r\n //console.log(this.sellToken);\r\n this.loading = false;\r\n }\r\n\r\n private getTime(date?: Date) {\r\n return date != null ? new Date(date).getTime() : 0;\r\n }\r\n \r\n public sortByStartDate(array: ISwapRequestDCAViewModel[]): ISwapRequestDCAViewModel[] {\r\n return array.sort((a: ISwapRequestDCAViewModel, b: ISwapRequestDCAViewModel) => {\r\n let aDate:Date = moment(a.CreatedAt,\"YYYY-MM-DD HH:mm\").toDate();//.format(\"YYYY-MM-DD HH:mm\");\r\n let bDate:Date = moment(b.CreatedAt,\"YYYY-MM-DD HH:mm\").toDate();//.format(\"YYYY-MM-DD HH:mm\");\r\n return this.getTime(bDate) - this.getTime(aDate);\r\n });\r\n }\r\n\r\n private createValidationRules() {\r\n const rules = ValidationRules\r\n .ensure('buyTokenSymbol')\r\n .required()\r\n .withMessageKey('errors:dashboardBuyTokenSymbolRequired')\r\n .ensure('sellTokenSymbol')\r\n .required()\r\n .withMessageKey('errors:dashboardSellTokenSymbolRequired') \r\n .ensure('sellTokenAmount')\r\n .required()\r\n .withMessageKey(\"errors:dashboardSellTokenAmountRequired\")\r\n .then()\r\n .ensure('sellTokenAmount').satisfies((value: any, object: any) => parseFloat(value) > 0)\r\n .withMessageKey('errors:dashboardAmountMustBeGreaterThanZero')\r\n .ensure('dcaRecurrenceTypeAmount')\r\n .required()\r\n .withMessageKey(\"errors:dcaRecurrenceTypeAmountRequired\")\r\n .then()\r\n .ensure('dcaRecurrenceTypeAmount').satisfies((value: any, object: any) => { \r\n if (parseFloat(value) > 0) \r\n return true; \r\n\r\n return false;\r\n })\r\n .withMessageKey('errors:dcaRecurrenceTypeAmountRanges') \r\n .ensure('dcaOrderNo')\r\n .required()\r\n .withMessageKey(\"errors:dcaOrderNoRequired\")\r\n .then()\r\n .ensure('dcaOrderNo').satisfies((value: any, object: any) => {\r\n if (parseFloat(value) >= 2 && parseFloat(value) <= 20){\r\n return true;\r\n }\r\n\r\n return false;\r\n }).withMessageKey('errors:dcaOrderNoRanges').then() \r\n .satisfies((value: any, object: any) => {\r\n if (this.sellToken.isCrypto || parseFloat(this.sellTokenAmount) <= this.sellToken.userBalance.balance){ \r\n return true;\r\n }\r\n\r\n return false;\r\n }).withMessageKey('errors:dashboardInsufficientBalance').then()\r\n .satisfies((value: any, object: any) => {\r\n if (this.mappedMarketPools.get(this.sellTokenSymbol+\":\"+this.buyTokenSymbol)) {\r\n this.poolTokenPair = this.sellTokenSymbol+\":\"+this.buyTokenSymbol;\r\n } else if (this.mappedMarketPools.get(this.buyTokenSymbol+\":\"+this.sellTokenSymbol)){ \r\n this.poolTokenPair = this.buyTokenSymbol+\":\"+this.sellTokenSymbol;\r\n }\r\n\r\n if (this.poolTokenPair) {\r\n console.log('found pair');\r\n console.log(this.poolTokenPair);\r\n return true;\r\n }\r\n\r\n return false;\r\n }).withMessageKey('errors:poolNotAvailable')\r\n .then()\r\n .satisfies((value: any, object: any) => {\r\n if(environment.isDebug || parseFloat(this.sellToken.metrics.lastPriceUsd) * this.sellTokenAmount >= 1) {\r\n return true;\r\n };\r\n\r\n return false;\r\n }).withMessageKey('errors:dcaMinimumOrderValueUsd')\r\n .rules;\r\n\r\n this.validationController.addObject(this, rules);\r\n }\r\n}\r\n\r\n\r\n"],"sourceRoot":""}