Skip to content
Snippets Groups Projects
Commit d082f087 authored by Robert Goldmann's avatar Robert Goldmann
Browse files

colored chart legendsolor, added charts for in & out categories

-colored chart legends for category charts according to category colors
-added charts for in and out categories
parent a1cb8acf
No related branches found
No related tags found
2 merge requests!104merge v_1_2_0 into master,!100merge charts into v_1_2_0
package de.deadlocker8.budgetmaster.logic.chartGenerators;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Set;
import de.deadlocker8.budgetmaster.logic.CategoryInOutSum;
import de.deadlocker8.budgetmaster.logic.Helpers;
......@@ -10,6 +12,7 @@ import javafx.event.EventHandler;
import javafx.geometry.Point2D;
import javafx.scene.Node;
import javafx.scene.chart.PieChart;
import javafx.scene.control.Label;
import javafx.scene.control.Tooltip;
import javafx.scene.input.MouseEvent;
import tools.ConvertTo;
......@@ -40,7 +43,12 @@ public class PieChartGenerator
for(CategoryInOutSum currentItem : categoryInOutSums)
{
String label = String.valueOf(currentItem.getName());
String label = currentItem.getName();
if(label.equals("NONE"))
{
label = "Keine Kategorie";
}
if(useBudgetIN)
{
data.add(new PieChart.Data(label, currentItem.getBudgetIN()/100.0));
......@@ -68,8 +76,24 @@ public class PieChartGenerator
total += currentData.getPieValue();
String currentColor = ConvertTo.toRGBHexWithoutOpacity(categoryInOutSums.get(i).getColor());
currentData.getNode().setStyle("-fx-pie-color: " + currentColor + ";");
}
//TODO color legend
//style legend item according to color
Set<Node> nodes = chart.lookupAll(".chart-legend-item");
if(nodes.size() > 0)
{
Iterator<Node> iterator = nodes.iterator();
int counter = 0;
while(iterator.hasNext())
{
Node node = iterator.next();
if(node instanceof Label)
{
Label labelLegendItem = (Label)node;
labelLegendItem.getGraphic().setStyle("-fx-background-color: " + ConvertTo.toRGBHexWithoutOpacity(categoryInOutSums.get(counter).getColor()) + ";");
}
counter++;
}
}
double pieValue = tool.getPieValue();
......
......@@ -6,12 +6,20 @@ import de.deadlocker8.budgetmaster.logic.CategoryInOutSum;
import de.deadlocker8.budgetmaster.logic.ServerConnection;
import de.deadlocker8.budgetmaster.logic.chartGenerators.PieChartGenerator;
import javafx.fxml.FXML;
import javafx.scene.control.Accordion;
import javafx.scene.control.DatePicker;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.HBox;
import logger.Logger;
public class ChartController implements Refreshable
{
@FXML private AnchorPane anchorPaneMain;
@FXML private Accordion accordion;
@FXML private DatePicker datePickerStart;
@FXML private HBox hboxChartCategories;
@FXML private DatePicker datePickerEnd;
@FXML private AnchorPane anchorPaneChartMonth;
private Controller controller;
......@@ -21,6 +29,8 @@ public class ChartController implements Refreshable
// TODO design, chart chooser
anchorPaneMain.setStyle("-fx-background-color: #F4F4F4;");
hboxChartCategories.setStyle("-fx-background-color: #F4F4F4;");
anchorPaneChartMonth.setStyle("-fx-background-color: #F4F4F4;");
}
@Override
......@@ -33,8 +43,15 @@ public class ChartController implements Refreshable
{
ServerConnection connection = new ServerConnection(controller.getSettings());
ArrayList<CategoryInOutSum> sums = connection.getCategoryInOutSumForMonth(controller.getCurrentDate().withDayOfMonth(1), controller.getCurrentDate().dayOfMonth().withMaximumValue());
PieChartGenerator generator = new PieChartGenerator("Einnahmen nach Kategorien", sums, false, controller.getSettings().getCurrency());
anchorPaneMain.getChildren().add(generator.generate());
hboxChartCategories.getChildren().clear();
PieChartGenerator generator = new PieChartGenerator("Einnahmen nach Kategorien", sums, true, controller.getSettings().getCurrency());
hboxChartCategories.getChildren().add(generator.generate());
generator = new PieChartGenerator("Ausgaben nach Kategorien", sums, false, controller.getSettings().getCurrency());
hboxChartCategories.getChildren().add(generator.generate());
accordion.setExpandedPane(accordion.getPanes().get(0));
}
catch(Exception e)
{
......
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Accordion?>
<?import javafx.scene.control.DatePicker?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TitledPane?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Font?>
<AnchorPane fx:id="anchorPaneMain" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.budgetmaster.ui.ChartController">
<children>
<VBox alignment="TOP_CENTER" layoutY="24.0" prefHeight="562.0" prefWidth="772.0" spacing="25.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="25.0" />
<Accordion fx:id="accordion" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="25.0">
<panes>
<TitledPane animated="false" text="Einnahmen/Ausgaben nach Kategorien">
<content>
<VBox spacing="20.0">
<children>
<HBox alignment="CENTER" prefHeight="8.0" prefWidth="750.0">
<children>
<HBox alignment="CENTER_RIGHT" spacing="10.0" HBox.hgrow="ALWAYS">
<children>
<Label text="Von:">
<font>
<Font name="System Bold" size="16.0" />
</font>
</Label>
<DatePicker fx:id="datePickerStart" />
</children>
<HBox.margin>
<Insets right="15.0" />
</HBox.margin>
</HBox>
<HBox alignment="CENTER_LEFT" spacing="10.0" HBox.hgrow="ALWAYS">
<children>
<Label text="Bis:">
<font>
<Font name="System Bold" size="16.0" />
</font>
</Label>
<DatePicker fx:id="datePickerEnd" />
</children>
<HBox.margin>
<Insets left="15.0" />
</HBox.margin>
</HBox>
</children>
</HBox>
<HBox fx:id="hboxChartCategories" alignment="CENTER" prefHeight="100.0" prefWidth="200.0" VBox.vgrow="ALWAYS" />
</children>
</VBox>
</content>
<font>
<Font name="System Bold" size="12.0" />
</font>
</TitledPane>
<TitledPane animated="false" text="Einnahmen/Ausgaben pro Monat">
<content>
<AnchorPane fx:id="anchorPaneChartMonth" minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
</content>
<font>
<Font name="System Bold" size="12.0" />
</font>
</TitledPane>
</panes>
</Accordion>
</children>
</AnchorPane>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment