diff --git a/src/main/java/edu/ntnu/idi/idatt2003/gruppe42/View/Views/Components/StockGraph.java b/src/main/java/edu/ntnu/idi/idatt2003/gruppe42/View/Views/Components/StockGraph.java new file mode 100644 index 0000000..df9fea7 --- /dev/null +++ b/src/main/java/edu/ntnu/idi/idatt2003/gruppe42/View/Views/Components/StockGraph.java @@ -0,0 +1,60 @@ +package edu.ntnu.idi.idatt2003.gruppe42.View.Views.Components; + +import edu.ntnu.idi.idatt2003.gruppe42.Model.Stock; +import javafx.scene.chart.LineChart; +import javafx.scene.chart.NumberAxis; +import javafx.scene.chart.XYChart; +import javafx.scene.layout.VBox; + +import java.math.BigDecimal; +import java.util.List; + +public class StockGraph extends VBox { + + private final LineChart lineChart; + private final NumberAxis xAxis; + private final NumberAxis yAxis; + + public StockGraph(double width, double height) { + xAxis = new NumberAxis(); + xAxis.setLabel("Time"); + + yAxis = new NumberAxis(); + yAxis.setLabel("Price"); + + lineChart = new LineChart<>(xAxis, yAxis); + lineChart.setPrefSize(width, height); + + getChildren().add(lineChart); + } + + public boolean display(Stock stock, int resolution) { + if (stock == null) { + return false; + } + + lineChart.getData().clear(); + + XYChart.Series series = new XYChart.Series<>(); + series.setName(stock.getCompany()); + + List history = stock.getHistoricalPrices(); + + if (history.size() < resolution) { + return false; + } + + List latestHistory = history.subList(Math.max(history.size() - resolution, 0), history.size()); + + for (int i = 0; i < resolution; i++) { + series.getData().add(new XYChart.Data<>(i, latestHistory.get(i))); + } + + lineChart.getData().add(series); + return true; + } + + public void clear() { + lineChart.getData().clear(); + } +}