import { Component, OnInit } from '@angular/core'; import { DataService } from 'src/app/Services/data.service'; import { MatDialog } from '@angular/material/dialog'; import { UserDialogComponent } from './user-dialog/user-dialog.component'; import { HelperService } from 'src/app/Helpers/helper.service'; export interface PeriodicElement { name: string; position: number; weight: number; symbol: string; } export interface Stock { count: number; currentPrice: number; symbol: string; time: string; } //symbol count lastTransaction boughtPrice currentPrice(+?) const ELEMENT_DATA: PeriodicElement[] = [ { position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H' }, { position: 2, name: 'Helium', weight: 4.0026, symbol: 'He' }, { position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li' }, ]; var TRANSACTION_DATA: TransactionData[] = []; var STOCK_DATA: Stock[] = []; export interface TransactionData { comment: string; isin: string; time: string; count: number; price: number; } @Component({ selector: 'app-dashboard', templateUrl: './dashboard.component.html', styleUrls: ['./dashboard.component.scss'], }) export class DashboardComponent implements OnInit { constructor( private dataService: DataService, private helper: HelperService, public dialog: MatDialog ) {} dataSourceTransactions: TransactionData[] = []; dataSourceStocks: Stock[] = []; depotCurrentValue: number = 0; depotCost: number = 0; profit: number = 0; getTransactions() { var TRANSACTION_DATA: TransactionData[] = []; this.dataService.getTransactionData().subscribe((response: any) => { var data = JSON.parse(response); this.depotCost = 0; for (let i = 0; i < data.data.length; i++) { this.depotCost += data.data[i].price; TRANSACTION_DATA.push({ comment: data.data[i].comment, isin: data.data[i].isin, time: data.data[i].time, count: data.data[i].count, price: data.data[i].price, }); } this.dataSourceTransactions = TRANSACTION_DATA; //TODO move to helper service this.profit = this.depotCurrentValue - this.depotCost; }); } ngOnInit() { this.dataService.getStockData().subscribe((response: any) => { var data = JSON.parse(response); this.depotCurrentValue = 0; for (let i = 0; i < data.data.length; i++) { this.depotCurrentValue = data.data[i].current_price; STOCK_DATA.push({ count: data.data[i].count, currentPrice: data.data[i].current_price, symbol: data.data[i].symbol, time: data.data[i].last_transaction, }); } this.dataSourceStocks = STOCK_DATA; //TODO move to helper service this.profit += this.depotCurrentValue; }); this.dataService.getTransactionData().subscribe((response: any) => { var data = JSON.parse(response); this.depotCost = 0; for (let i = 0; i < data.data.length; i++) { this.depotCost += data.data[i].price; TRANSACTION_DATA.push({ comment: data.data[i].comment, isin: data.data[i].isin, time: data.data[i].time, count: data.data[i].count, price: data.data[i].price, }); } this.dataSourceTransactions = TRANSACTION_DATA; //TODO move to helper service this.profit -= this.depotCost; }); } comment: string = ''; isin: string = ''; time: Date = new Date(); count: number = 0.0; price: number = 0.0; openDialog(): void { const dialogRef = this.dialog.open(UserDialogComponent, { width: '50vw', data: { comment: this.comment, isin: this.isin, time: this.time, count: this.count, price: this.price, }, }); dialogRef.afterClosed().subscribe((result) => { this.helper.delay(1000); this.getTransactions(); }); } displayedColumns: string[] = [ 'comment', 'weight', 'position', 'name', 'symbol', ]; displayedColumnsStocks: string[] = [ 'position', 'name', 'weight', 'current-price', ]; dataSource = ELEMENT_DATA; }