From c151758cf5a63b020d54d4e7919233aa5f4296bc Mon Sep 17 00:00:00 2001 From: pawelsa Date: Wed, 13 May 2026 16:28:54 +0200 Subject: [PATCH] feat: Implement TransactionComponent class --- .../elements/TransactionComponent.java | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 src/main/java/edu/ntnu/idi/idatt/view/components/elements/TransactionComponent.java diff --git a/src/main/java/edu/ntnu/idi/idatt/view/components/elements/TransactionComponent.java b/src/main/java/edu/ntnu/idi/idatt/view/components/elements/TransactionComponent.java new file mode 100644 index 0000000..850af4a --- /dev/null +++ b/src/main/java/edu/ntnu/idi/idatt/view/components/elements/TransactionComponent.java @@ -0,0 +1,94 @@ +package edu.ntnu.idi.idatt.view.components.elements; + +import java.util.List; + +import edu.ntnu.idi.idatt.model.market.Stock; +import edu.ntnu.idi.idatt.model.transaction.Purchase; +import edu.ntnu.idi.idatt.model.transaction.Sale; +import edu.ntnu.idi.idatt.model.transaction.Transaction; +import edu.ntnu.idi.idatt.service.transaction.PurchaseCalculator; +import edu.ntnu.idi.idatt.service.transaction.SaleCalculator; +import edu.ntnu.idi.idatt.view.components.ui.UICompositor; +import edu.ntnu.idi.idatt.view.util.CssUtils; +import javafx.geometry.Insets; +import javafx.geometry.Pos; +import javafx.scene.control.Label; +import javafx.scene.layout.VBox; + +public class TransactionComponent extends VBox { + + public TransactionComponent(Transaction transaction) { + + Stock stock = transaction.getShare().getStock(); + + Label title; + Label name = new Label(stock.getCompany() + " (" + stock.getSymbol() + ")"); + Label totalValue; + Label taxComissionValue; + Label grossValue; + Label amountOfShares; + Label saleProfit; + + if (transaction instanceof Purchase) { + title = new Label("PURCHASE"); + CssUtils.apply(title, CssUtils.GREEN); + + PurchaseCalculator calculator = (PurchaseCalculator) transaction.getCalculator(); + totalValue = new Label("Total: " + calculator.calculateTotal() + " USD"); + taxComissionValue = new Label( + "Tax & Comission: " + calculator.calculateTax().add(calculator.calculateCommision()) + " USD"); + grossValue = new Label("Gross: " + calculator.calculateGross() + " USD"); + amountOfShares = new Label("Shares: " + transaction.getShare().getQuantity() + " [" + stock.getSymbol() + "]"); + saleProfit = new Label(); + + } else if (transaction instanceof Sale) { + title = new Label("SALE"); + CssUtils.apply(title, CssUtils.RED); + + SaleCalculator calculator = (SaleCalculator) transaction.getCalculator(); + totalValue = new Label("Total: " + calculator.calculateTotal() + " USD"); + taxComissionValue = new Label( + "Tax & Comission: " + calculator.calculateTax().add(calculator.calculateCommision()) + " USD"); + grossValue = new Label("Gross: " + calculator.calculateGross() + " USD"); + amountOfShares = new Label("Shares: " + transaction.getShare().getQuantity() + " [" + stock.getSymbol() + "]"); + saleProfit = new Label("Profit: " + calculator.calculateProfit() + " USD"); + + CssUtils.apply(saleProfit, CssUtils.generateValueColors(calculator.calculateProfit().doubleValue())); + } + + else { + System.out.println("Failed to initialize transactionComponent!"); + return; + } + + this.setPrefSize(400, Double.MAX_VALUE); + this.setMinWidth(400); + this.setPadding(new Insets(40)); + this.setAlignment(Pos.TOP_CENTER); + + // TODO: CHANGE AND IN STOCKComponent + this.setStyle("-fx-background-color: #404950;"); + + CssUtils.apply(title, CssUtils.BIG_TEXT_32); + CssUtils.apply(name, CssUtils.BIG_TEXT_32); + List