From 3dec44ada139584e31c5cbbfbc085c82524ffc9c Mon Sep 17 00:00:00 2001 From: Sem van der Hoeven Date: Wed, 27 Mar 2019 13:10:21 +0100 Subject: [PATCH 01/59] EDIT::Finished Travel GUI section of calculator --- .../controller/CalculatorController.java | 45 +++++++--- .../src/main/resources/fxml/calculator.fxml | 90 ++++++++++++++++++- .../resources/stylesheets/calculatorStyle.css | 6 ++ 3 files changed, 126 insertions(+), 15 deletions(-) diff --git a/src/Client/src/main/java/greenify/client/controller/CalculatorController.java b/src/Client/src/main/java/greenify/client/controller/CalculatorController.java index fd77140..ac525dd 100644 --- a/src/Client/src/main/java/greenify/client/controller/CalculatorController.java +++ b/src/Client/src/main/java/greenify/client/controller/CalculatorController.java @@ -18,16 +18,6 @@ public class CalculatorController { @Autowired UserService userService; - @FXML - private Button calculatorGetStartedButton; - @FXML - private Button calculatorTravelButton; - @FXML - private Button calculatorHomeButton; - @FXML - private Button calculatorFoodButton; - @FXML - private Button calculatorShoppingButton; @FXML private AnchorPane getStartedPane; @FXML @@ -48,12 +38,29 @@ public class CalculatorController { private Label annualIncomeLabel; @FXML private Button saveButton; - // @FXML - // private Button getStartedNextButton; + //travel pane @FXML private TextField publicTransitField; @FXML private TextField airplaneTravelField; + @FXML + private TextField carTravelGasolineField; + @FXML + private Slider carTravelGasolineSlider; + @FXML + private Label carTravelGasolineLabel; + @FXML + private TextField carTravelDieselField; + @FXML + private Slider carTravelDieselSlider; + @FXML + private Label carTravelDieselLabel; + @FXML + private TextField carTravelElectricField; + @FXML + private Slider carTravelElectricSlider; + @FXML + private Label carTravelElectricLabel; /** * initializes the window, performs some actions before loading all other things. @@ -80,6 +87,20 @@ public class CalculatorController { annualIncomeLabel.setText("" + (newValue.intValue() * 1000)); } }); + + addSliderListenerCarUsage(carTravelGasolineSlider, carTravelGasolineLabel); + addSliderListenerCarUsage(carTravelDieselSlider, carTravelDieselLabel); + addSliderListenerCarUsage(carTravelElectricSlider, carTravelElectricLabel); + } + + private void addSliderListenerCarUsage(Slider slider, Label label) { + slider.valueProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, + Number oldValue, Number newValue) { + label.setText(newValue.intValue() + "L/km"); + } + }); } /** diff --git a/src/Client/src/main/resources/fxml/calculator.fxml b/src/Client/src/main/resources/fxml/calculator.fxml index 8e91268..44bec69 100644 --- a/src/Client/src/main/resources/fxml/calculator.fxml +++ b/src/Client/src/main/resources/fxml/calculator.fxml @@ -141,7 +141,85 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -157,13 +235,19 @@ - + + + + - + + + + diff --git a/src/Client/src/main/resources/stylesheets/calculatorStyle.css b/src/Client/src/main/resources/stylesheets/calculatorStyle.css index a60f95f..c205ea7 100644 --- a/src/Client/src/main/resources/stylesheets/calculatorStyle.css +++ b/src/Client/src/main/resources/stylesheets/calculatorStyle.css @@ -36,6 +36,12 @@ -fx-padding: 0 0 0 3px; } +.km-indicator { + -fx-background-color: #89a888; + -fx-background-radius: 5px; + -fx-border-radius: 5px; +} + From 980e64657a32dafc89be87030497bc85ca36800d Mon Sep 17 00:00:00 2001 From: Sem van der Hoeven Date: Wed, 27 Mar 2019 20:51:14 +0100 Subject: [PATCH 02/59] EDIT::finished home section of calculator --- .../controller/CalculatorController.java | 96 +++++++++- .../src/main/resources/fxml/calculator.fxml | 181 ++++++++++++++++-- .../src/main/resources/icons/leaficon.png | Bin 0 -> 6350 bytes .../resources/stylesheets/calculatorStyle.css | 12 ++ 4 files changed, 261 insertions(+), 28 deletions(-) create mode 100644 src/Client/src/main/resources/icons/leaficon.png diff --git a/src/Client/src/main/java/greenify/client/controller/CalculatorController.java b/src/Client/src/main/java/greenify/client/controller/CalculatorController.java index ac525dd..3a25c06 100644 --- a/src/Client/src/main/java/greenify/client/controller/CalculatorController.java +++ b/src/Client/src/main/java/greenify/client/controller/CalculatorController.java @@ -10,6 +10,7 @@ import javafx.scene.control.Label; import javafx.scene.control.Slider; import javafx.scene.control.TextField; import javafx.scene.layout.AnchorPane; +import javafx.util.StringConverter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -18,6 +19,7 @@ public class CalculatorController { @Autowired UserService userService; + //navigation panes @FXML private AnchorPane getStartedPane; @FXML @@ -28,6 +30,8 @@ public class CalculatorController { private AnchorPane foodPane; @FXML private AnchorPane shoppingPane; + + //'get started' pane @FXML private Slider peopleInHouseholdSlider; @FXML @@ -38,6 +42,7 @@ public class CalculatorController { private Label annualIncomeLabel; @FXML private Button saveButton; + //travel pane @FXML private TextField publicTransitField; @@ -62,14 +67,23 @@ public class CalculatorController { @FXML private Label carTravelElectricLabel; + //home pane + @FXML + private Slider cleanEnergyPurchasedSlider; + @FXML + private Label cleanEnergyPurchasedLabel; + @FXML + private Slider waterUsageSlider; + @FXML + private Label waterUsageLabel; + /** * initializes the window, performs some actions before loading all other things. - * it sets the sliders to snap to the ticks - * it adds listeners to all the sliders for updating the label next to them + * it sets the sliders to snap to the ticks. + * it adds listeners to all the sliders for updating the label they are associated with. */ public void initialize() { peopleInHouseholdSlider.setSnapToTicks(true); - annualIncomeSlider.setSnapToTicks(true); //add listener to slider for amount of people in household peopleInHouseholdSlider.valueProperty().addListener(new ChangeListener() { @@ -88,17 +102,83 @@ public class CalculatorController { } }); - addSliderListenerCarUsage(carTravelGasolineSlider, carTravelGasolineLabel); - addSliderListenerCarUsage(carTravelDieselSlider, carTravelDieselLabel); - addSliderListenerCarUsage(carTravelElectricSlider, carTravelElectricLabel); + addSliderListenerCarUsage(carTravelGasolineSlider, carTravelGasolineLabel, " km/L"); + addSliderListenerCarUsage(carTravelDieselSlider, carTravelDieselLabel, " km/L"); + addSliderListenerCarUsage(carTravelElectricSlider, carTravelElectricLabel, " km/Le"); + + cleanEnergyPurchasedSlider.valueProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, + Number oldValue, Number newValue) { + cleanEnergyPurchasedLabel.setText(newValue.intValue() + " %"); + } + }); + + waterUsageSlider.valueProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, + Number oldValue, Number newValue) { + waterUsageLabel.setText(newValue.intValue() + "% of similar households"); + } + }); +// addLabelFormatterToSlider(waterUsageSlider); + + + + } - private void addSliderListenerCarUsage(Slider slider, Label label) { + /** + * Adds a label formatter to the given slider. + * sets the tick labels to be either 0, 1x, 2x or 3x. + * @param slider the slider to change the tick labels of. + */ + private void addLabelFormatterToSlider(Slider slider) { + slider.setLabelFormatter(new StringConverter() { + @Override + public String toString(Double object) { + if (object < 0.5) { + return "0"; + } + if (object < 1.5) { + return "1x"; + } + if (object < 2.5) { + return "2x"; + } + return "3x"; + } + + @Override + public Double fromString(String string) { + switch (string) { + case "0": + return 0d; + case "1x": + return 1d; + case "2x": + return 2d; + case "3x": + return 3d; + + default: + return 3d; + } + } + }); + } + + /** + * adds the listener to the given slider and displays it's output on a given label. + * @param slider the slider to attach the listener to. + * @param label the label to display the slider output on. + */ + private void addSliderListenerCarUsage(Slider slider, Label label, String unit) { slider.valueProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, Number oldValue, Number newValue) { - label.setText(newValue.intValue() + "L/km"); + label.setText(newValue.intValue() + unit); } }); } diff --git a/src/Client/src/main/resources/fxml/calculator.fxml b/src/Client/src/main/resources/fxml/calculator.fxml index 44bec69..428865e 100644 --- a/src/Client/src/main/resources/fxml/calculator.fxml +++ b/src/Client/src/main/resources/fxml/calculator.fxml @@ -1,16 +1,19 @@ - - - - - - - - - + + + + + + + + + + + + - + @@ -104,14 +107,14 @@ - + - + - + @@ -411,7 +417,167 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -531,7 +531,7 @@ - + From d0beb236ea0cd4a4bacab4de02fb9b487ab2d9b4 Mon Sep 17 00:00:00 2001 From: cugurlu Date: Fri, 29 Mar 2019 12:47:24 +0100 Subject: [PATCH 05/59] Edit to connect calculator with GUI --- .../controller/CalculatorController.java | 135 ++++++++++++++++-- .../src/main/resources/fxml/calculator.fxml | 38 +++-- 2 files changed, 140 insertions(+), 33 deletions(-) diff --git a/src/Client/src/main/java/greenify/client/controller/CalculatorController.java b/src/Client/src/main/java/greenify/client/controller/CalculatorController.java index 30ff3e4..241d1c0 100644 --- a/src/Client/src/main/java/greenify/client/controller/CalculatorController.java +++ b/src/Client/src/main/java/greenify/client/controller/CalculatorController.java @@ -12,10 +12,12 @@ import javafx.fxml.FXML; import javafx.scene.Node; import javafx.scene.control.Button; import javafx.scene.control.Label; +import javafx.scene.control.ScrollPane; import javafx.scene.control.Slider; import javafx.scene.control.TextField; -import javafx.scene.control.ScrollPane; import javafx.scene.layout.AnchorPane; +import javafx.stage.Stage; +import javafx.stage.Window; import javafx.util.Duration; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -77,10 +79,18 @@ public class CalculatorController { //home pane @FXML + private TextField electricityField; + @FXML private Slider cleanEnergyPurchasedSlider; @FXML private Label cleanEnergyPurchasedLabel; @FXML + private TextField naturalGasField; + @FXML + private TextField heatingOilField; + @FXML + private TextField livingSpaceField; + @FXML private Slider waterUsageSlider; @FXML private Label waterUsageLabel; @@ -293,24 +303,127 @@ public class CalculatorController { * The method saves the calculation. * @param event user clicks to button */ - public void saveCalculation(ActionEvent event) { + public void saveCalc(ActionEvent event) { + Window owner = saveButton.getScene().getWindow(); getStartedPane.setVisible(false); travelPane.setVisible(false); homePane.setVisible(false); foodPane.setVisible(false); shoppingPane.setVisible(false); - if (!annualIncomeLabel.getText().equals(null)) { + if (!annualIncomeLabel.getText().equals("0")) { userService.updateInput(userService.currentUser.getName(), "input_income", annualIncomeLabel.getText()); } - if (!peopleInHouseHoldLabel.getText().equals(null)) { - userService.updateInput(userService.currentUser.getName(), "input_population", + if (!peopleInHouseHoldLabel.getText().equals("0")) { + userService.updateInput(userService.currentUser.getName(), "input_size", peopleInHouseHoldLabel.getText()); } - userService.updateInput(userService.currentUser.getName(), - "input_footprint_housing_naturalgas_cuft", "0"); - userService.updateInput(userService.currentUser.getName(), - "input_footprint_transportation_miles1", "0"); + if (!publicTransitField.getText().equals("0")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_transportation_publictrans", + publicTransitField.getText()); + } + if (!airplaneTravelField.getText().equals("0")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_transportation_airtotal", + airplaneTravelField.getText()); + } + if (!carTravelGasolineField.getText().equals("0")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_transportation_miles1", + carTravelGasolineField.getText()); + } + if (!carTravelGasolineLabel.getText().replace(" km/L", "").equals("0")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_transportation_mpg1", + carTravelGasolineLabel.getText()); + } + if (!carTravelDieselField.getText().equals("0")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_transportation_miles2", + carTravelDieselField.getText()); + } + if (!carTravelDieselLabel.getText().replace(" km/L", "").equals("0")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_transportation_mpg2", + carTravelDieselLabel.getText()); + } + if (!carTravelElectricField.getText().equals("0")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_transportation_miles3", + peopleInHouseHoldLabel.getText()); + } + if (!carTravelElectricLabel.getText().replace(" km/Le", "").equals("0")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_transportation_mpg3", + carTravelElectricLabel.getText()); + } + if (!electricityField.getText().equals("0")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_electricity_dollars", + electricityField.getText()); + } + if (!cleanEnergyPurchasedLabel.getText().replace(" %", "").equals("0")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_housing_gco2_per_kwh", + cleanEnergyPurchasedLabel.getText()); + } + if (!naturalGasField.getText().equals("0")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_naturalgas_dollars", + naturalGasField.getText()); + } + if (!heatingOilField.getText().equals("0")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_heatingoil_dollars", + heatingOilField.getText()); + } + if (!livingSpaceField.getText().equals("0")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_housing_squarefeet", + livingSpaceField.getText()); + } + if (!waterUsageLabel.getText().replace("% of similar households", "").equals("0")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_housing_watersewage", + waterUsageLabel.getText()); + } + if (!meatFishEggsLabel.getText().replace(" daily servings per person", "").equals("2.6")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_shopping_food_meatfisheggs", + meatFishEggsLabel.getText()); + } + if (!grainsBakedGoodsLabel.getText().replace(" daily servings per person", "").equals("4.4")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_shopping_food_cereals", + grainsBakedGoodsLabel.getText()); + } + if (!dairyLabel.getText().replace(" daily servings per person", "").equals("2.4")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_shopping_food_dairy", + dairyLabel.getText()); + } + if (!fruitsVegetablesLabel.getText().replace(" daily servings per person", "").equals("3.9")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_shopping_food_fruitvegetables", + fruitsVegetablesLabel.getText()); + } + if (!snacksDrinksLabel.getText().replace(" daily servings per person", "").equals("3.7")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_shopping_food_otherfood", + snacksDrinksLabel.getText()); + } + if (!goodsLabel.getText().replace(" € / month", "").equals("1520")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_shopping_goods_total", + snacksDrinksLabel.getText()); + } + if (!servicesLabel.getText().replace(" € / month", "").equals("3428")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_shopping_services_total", + snacksDrinksLabel.getText()); + } + Stage current = (Stage) owner; + current.close(); } -} - +} \ No newline at end of file diff --git a/src/Client/src/main/resources/fxml/calculator.fxml b/src/Client/src/main/resources/fxml/calculator.fxml index 6cb37ec..c29e264 100644 --- a/src/Client/src/main/resources/fxml/calculator.fxml +++ b/src/Client/src/main/resources/fxml/calculator.fxml @@ -1,11 +1,5 @@ - - - - - - @@ -107,7 +101,7 @@ - @@ -157,7 +151,7 @@ - + @@ -200,7 +194,7 @@ - + @@ -215,7 +209,7 @@ - + @@ -256,7 +250,7 @@ - + @@ -265,7 +259,7 @@ - + @@ -302,7 +296,7 @@ - + @@ -353,7 +347,7 @@ - + @@ -370,7 +364,7 @@ - + @@ -385,7 +379,7 @@ - + @@ -453,7 +447,7 @@ -