Fix chart colors

This commit is contained in:
2026-03-11 08:55:21 -06:00
parent 6089d1980c
commit 130322d6d8

View File

@@ -21,6 +21,7 @@ import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import javafx.util.StringConverter;
import java.util.*;
import java.util.stream.Collectors;
@@ -62,6 +63,12 @@ public class AnalyticsController {
@FXML
private BarChart<String, Number> chartEmployeePerformance;
private static final String SALES_COLOR = "#ff6b35";
private static final String REVENUE_COLOR = "#4ecdc4";
private static final String QUANTITY_COLOR = "#ff9f1c";
private static final String EMPLOYEE_COLOR = "#1a759f";
private static final List<String> PIE_COLORS = List.of("#ff6b35", "#4ecdc4", "#1a759f", "#ff9f1c", "#577590", "#90be6d");
private final NumberFormat currency = NumberFormat.getCurrencyInstance(Locale.CANADA);
private final NumberFormat wholeNumber = NumberFormat.getIntegerInstance();
private final DateTimeFormatter chartDateFormatter = DateTimeFormatter.ofPattern("MMM d", Locale.CANADA);
@@ -191,6 +198,7 @@ public class AnalyticsController {
axisSalesDate.setUpperBound(upperBound);
chartSalesOverTime.getData().clear();
chartSalesOverTime.getData().add(series);
applyLineChartColor(chartSalesOverTime, SALES_COLOR);
}
private String formatChartDate(String date) {
@@ -217,6 +225,7 @@ public class AnalyticsController {
chartTopRevenue.getData().clear();
chartTopRevenue.getData().add(series);
applyBarChartColor(chartTopRevenue, REVENUE_COLOR);
}
private void loadTopProductsByQuantity(DashboardResponse dashboard) throws Exception {
@@ -231,6 +240,7 @@ public class AnalyticsController {
chartTopQuantity.getData().clear();
chartTopQuantity.getData().add(series);
applyBarChartColor(chartTopQuantity, QUANTITY_COLOR);
}
private void loadPaymentMethodDistribution(List<SaleResponse> sales) throws Exception {
@@ -243,7 +253,11 @@ public class AnalyticsController {
chartPaymentMethods.getData().clear();
for (Map.Entry<String, Long> entry : paymentMethodCount.entrySet()) {
List<Map.Entry<String, Long>> paymentEntries = paymentMethodCount.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.toList();
for (Map.Entry<String, Long> entry : paymentEntries) {
PieChart.Data slice = new PieChart.Data(
entry.getKey() + " (" + entry.getValue() + ")",
entry.getValue()
@@ -252,6 +266,7 @@ public class AnalyticsController {
}
chartPaymentMethods.setLabelsVisible(false);
applyPieChartColors();
}
private void loadEmployeePerformance(List<SaleResponse> sales) throws Exception {
@@ -266,12 +281,55 @@ public class AnalyticsController {
XYChart.Series<String, Number> series = new XYChart.Series<>();
series.setName("Revenue");
for (Map.Entry<String, Double> entry : employeeRevenue.entrySet()) {
List<Map.Entry<String, Double>> employeeEntries = employeeRevenue.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.toList();
for (Map.Entry<String, Double> entry : employeeEntries) {
series.getData().add(new XYChart.Data<>(entry.getKey(), entry.getValue()));
}
chartEmployeePerformance.getData().clear();
chartEmployeePerformance.getData().add(series);
applyBarChartColor(chartEmployeePerformance, EMPLOYEE_COLOR);
}
private void applyLineChartColor(LineChart<Number, Number> chart, String color) {
Platform.runLater(() -> {
for (XYChart.Series<Number, Number> series : chart.getData()) {
if (series.getNode() != null) {
series.getNode().setStyle("-fx-stroke: " + color + ";");
}
for (XYChart.Data<Number, Number> data : series.getData()) {
if (data.getNode() != null) {
data.getNode().setStyle("-fx-background-color: white, " + color + ";");
}
}
}
});
}
private <X, Y> void applyBarChartColor(XYChart<X, Y> chart, String color) {
Platform.runLater(() -> {
for (XYChart.Series<X, Y> series : chart.getData()) {
for (XYChart.Data<X, Y> data : series.getData()) {
if (data.getNode() != null) {
data.getNode().setStyle("-fx-bar-fill: " + color + ";");
}
}
}
});
}
private void applyPieChartColors() {
Platform.runLater(() -> {
for (int i = 0; i < chartPaymentMethods.getData().size(); i++) {
PieChart.Data slice = chartPaymentMethods.getData().get(i);
if (slice.getNode() != null) {
slice.getNode().setStyle("-fx-pie-color: " + PIE_COLORS.get(i % PIE_COLORS.size()) + ";");
}
}
});
}
@FXML