Skip to content

Commit

Permalink
add graph to display stocks
Browse files Browse the repository at this point in the history
  • Loading branch information
einaskoi committed Apr 22, 2026
1 parent 7b34f59 commit a291c22
Showing 1 changed file with 60 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -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<Number, Number> 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<Number, Number> series = new XYChart.Series<>();
series.setName(stock.getCompany());

List<BigDecimal> history = stock.getHistoricalPrices();

if (history.size() < resolution) {
return false;
}

List<BigDecimal> 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();
}
}

0 comments on commit a291c22

Please sign in to comment.