forked from nus-cs2103-AY1920S1/addressbook-level3
-
Notifications
You must be signed in to change notification settings - Fork 5
/
GraphPanel.java
59 lines (48 loc) · 2.04 KB
/
GraphPanel.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
package seedu.moneygowhere.ui;
import java.util.LinkedHashMap;
import java.util.Map;
import javafx.fxml.FXML;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.control.Tooltip;
import javafx.scene.layout.Region;
import javafx.scene.layout.StackPane;
/**
* Tab containing the spending graph.
*/
public class GraphPanel extends UiPart<Region> {
private static final String FXML = "PlaceholderPanel.fxml";
@FXML
private StackPane panePlaceholder;
public GraphPanel(LinkedHashMap<String, Double> graphData) {
super(FXML);
CategoryAxis xAxis = new CategoryAxis();
xAxis.setLabel("Date");
NumberAxis yAxis = new NumberAxis();
yAxis.setLabel("Amount spent ($)");
LineChart<String, Number> spendingChart = new LineChart<>(xAxis, yAxis);
spendingChart.setTitle("Graph");
XYChart.Series<String, Number> series = new XYChart.Series<>();
series.setName("Spending");
for (Map.Entry<String, Double> i : graphData.entrySet()) {
XYChart.Data<String, Number> dataToAdd = new XYChart.Data<>(i.getKey().toString(),
Math.round(i.getValue()));
series.getData().add(dataToAdd);
}
spendingChart.getData().add(series);
for (XYChart.Series<String, Number> s : spendingChart.getData()) {
for (XYChart.Data<String, Number> d : s.getData()) {
Tooltip.install(d.getNode(), new Tooltip(
"Date: \t" + d.getXValue() + "\n"
+ "Spending: \t$" + d.getYValue() + ".00"));
//Adding class on hover
d.getNode().setOnMouseEntered(event -> d.getNode().getStyleClass().add("onHover"));
//Removing class on exit
d.getNode().setOnMouseExited(event -> d.getNode().getStyleClass().remove("onHover"));
}
}
panePlaceholder.getChildren().add(spendingChart);
}
}