diff --git a/src/Client/src/main/java/greenify/client/Friend.java b/src/Client/src/main/java/greenify/client/Friend.java index 5612f79..d0e65e5 100644 --- a/src/Client/src/main/java/greenify/client/Friend.java +++ b/src/Client/src/main/java/greenify/client/Friend.java @@ -1,16 +1,17 @@ package greenify.client; +import javafx.beans.property.SimpleDoubleProperty; import javafx.beans.property.SimpleFloatProperty; import javafx.beans.property.SimpleStringProperty; public class Friend { private SimpleStringProperty friend; - private SimpleFloatProperty score; + private SimpleDoubleProperty score; - public Friend(String friend, Float friendScore) { + public Friend(String friend, Double friendScore) { this.friend = new SimpleStringProperty(friend); - this.score = new SimpleFloatProperty(friendScore); + this.score = new SimpleDoubleProperty(friendScore); } @@ -22,11 +23,11 @@ public class Friend { this.friend = new SimpleStringProperty(name); } - public Float getScore() { + public Double getScore() { return score.get(); } - public void setScore(Float score) { - this.score = new SimpleFloatProperty(score); + public void setScore(Double score) { + this.score = new SimpleDoubleProperty(score); } } diff --git a/src/Client/src/main/java/greenify/client/Hints.java b/src/Client/src/main/java/greenify/client/Hints.java index b9fda77..daf7176 100644 --- a/src/Client/src/main/java/greenify/client/Hints.java +++ b/src/Client/src/main/java/greenify/client/Hints.java @@ -12,26 +12,28 @@ public class Hints { } /** - * This method adds all the Strings to the arraylist. + * This method adds all the Strings to the array list. */ private void initHints() { this.hints.add("Buying local produce will not only decrease your carbon " + "footprint, but also help your local economy: A win-win!"); this.hints.add("Did you know that a gas oven only uses 6% of its energy " + "to cook? And an electric oven is not much better at 12%."); - this.hints.add("70% of the deforestation of the Amazon is to provide land for cattle ranches."); + this.hints.add("70% of the deforestation of the Amazon is to provide land for " + + "cattle ranches."); this.hints.add("Research shows that reducing meat consumption can increase" + " your life span by 3.6 years"); - this.hints.add("Vegetarians have a lower risk of getting heart disease, high blood pressure, " - + "diabetes and cancer than meat eaters."); + this.hints.add("Vegetarians have a lower risk of getting heart disease, high blood " + + "pressure, diabetes and cancer than meat eaters."); this.hints.add("Did you know? The carbon footprint of a vegetarian diet is about half " + "that of a meat-lover’s diet!"); this.hints.add("Cycling is good for the environment AND for your body, " + "so why not grab your bike instead of your car?"); - this.hints.add("If we could capture all of the sun’s energy shining on the Earth for just one " - + "hour, we could power the entire world for one year!"); + this.hints.add("If we could capture all of the sun’s energy shining on the Earth" + + " for just one hour, we could power the entire world for one year!"); this.hints.add("27,000 trees are cut down each day so we can have toilet paper."); - this.hints.add("A glass bottle made in our time will take more than 4,000 years to decompose."); + this.hints.add("A glass bottle made in our time will take more than 4,000 years " + + "to decompose."); this.hints.add("Don't forget to turn off the lights and heating in rooms" + " you're not using at the moment!"); this.hints.add("Did you know that about 4.5% of the Dutch population does not eat meat?"); @@ -53,7 +55,7 @@ public class Hints { + "utensils and napkins, it saves plastic and paper."); this.hints.add("It takes about 66 days to form a new habit, keep going!"); this.hints.add("Get yourself a nice reusable water bottle! It's cheaper and better for " - + "the environment to refill than to buy a new one every time it's empty."); + + "the environment to refill than to buy a new one every time it's empty."); this.hints.add("Recycle glass bottles!" + " A glass bottle made in our time will take more than 4,000 years" + " to decompose."); @@ -63,7 +65,7 @@ public class Hints { } /** - * This method returns a random String. + * This method gets a random String. * @return the random hint. */ public String randomHint() { @@ -73,3 +75,4 @@ public class Hints { } } + 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 ae837c2..9961f48 100644 --- a/src/Client/src/main/java/greenify/client/controller/CalculatorController.java +++ b/src/Client/src/main/java/greenify/client/controller/CalculatorController.java @@ -16,7 +16,6 @@ import javafx.fxml.FXML; import javafx.scene.Node; import javafx.scene.control.Alert; import javafx.scene.control.Button; -import javafx.scene.control.CheckBox; import javafx.scene.control.Label; import javafx.scene.control.ScrollPane; import javafx.scene.control.Slider; @@ -34,7 +33,6 @@ import java.text.DecimalFormat; @Controller public class CalculatorController { - private static UserController.AlertHelper AlertHelper; @Autowired UserService userService; @@ -146,15 +144,6 @@ public class CalculatorController { //extra pane @FXML private AnchorPane extraPane; - @FXML - private CheckBox localProduceCheckbox; - @FXML - private CheckBox bikeCheckbox; - @FXML - private CheckBox temperatureCheckbox; - @FXML - private CheckBox solarPanelsCheckbox; - /** * initializes the window, performs some actions before loading all other things. @@ -372,7 +361,6 @@ public class CalculatorController { foodPane.setVisible(false); shoppingPane.setVisible(false); extraPane.setVisible(true); - } /** @@ -394,46 +382,65 @@ public class CalculatorController { userService.updateInput(userService.currentUser.getName(), "input_size", peopleInHouseHoldLabel.getText()); } - if (!publicTransitField.getText().equals("0")) { + checkTransportLabels(); + checkHousingLabels(); + checkFoodLabels(); + if (!goodsLabel.getText().replace(" € / month", "").equals("1520")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_transportation_publictrans", - publicTransitField.getText()); + "input_footprint_shopping_goods_total", + goodsLabel.getText().replace("€ / month", "")); } - if (!airplaneTravelField.getText().equals("0")) { + if (!servicesLabel.getText().replace(" € / month", "").equals("3428")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_transportation_airtotal", - airplaneTravelField.getText()); + "input_footprint_shopping_services_total", + servicesLabel.getText().replace("€ / month", "")); } - if (!carTravelGasolineField.getText().equals("0")) { + Float footprint = userService.saveFootprint(userService.currentUser.getName()); + Window owner = saveButton.getScene().getWindow(); + Stage current = (Stage) owner; + current.close(); + controller.updateLeaderboard(); + UserController.AlertHelper.showAlert(Alert.AlertType.CONFIRMATION, + owner, "Footprint saved!", "Your footprint is saved!"); + } + + /** + * Checks the food labels. + */ + public void checkFoodLabels() { + if (!meatFishEggsLabel.getText().replace(" daily servings per person", "").equals("2.6")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_transportation_miles1", - carTravelGasolineField.getText()); + "input_footprint_shopping_food_meatfisheggs", + meatFishEggsLabel.getText().replace(" daily servings per person", "")); } - if (!carTravelGasolineLabel.getText().replace(" mpg", "").equals("0")) { + if (!grainsBakedGoodsLabel.getText() + .replace(" daily servings per person", "").equals("4.4")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_transportation_mpg1", - carTravelGasolineLabel.getText().replace(" mpg", "")); + "input_footprint_shopping_food_cereals", + grainsBakedGoodsLabel.getText().replace(" daily servings per person", "")); } - if (!carTravelDieselField.getText().equals("0")) { + if (!dairyLabel.getText().replace(" daily servings per person", "").equals("2.4")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_transportation_miles2", - carTravelDieselField.getText()); + "input_footprint_shopping_food_dairy", + dairyLabel.getText().replace(" daily servings per person", "")); } - if (!carTravelDieselLabel.getText().replace(" mpg", "").equals("0")) { + if (!fruitsVegetablesLabel.getText() + .replace(" daily servings per person", "").equals("3.9")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_transportation_mpg2", - carTravelDieselLabel.getText().replace(" mpg", "")); + "input_footprint_shopping_food_fruitvegetables", + fruitsVegetablesLabel.getText().replace(" daily servings per person", "")); } - if (!carTravelElectricField.getText().equals("0")) { + if (!snacksDrinksLabel.getText().replace(" daily servings per person", "").equals("3.7")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_transportation_miles3", - carTravelElectricField.getText()); - } - if (!carTravelElectricLabel.getText().replace(" mpge", "").equals("0")) { - userService.updateInput(userService.currentUser.getName(), - "input_footprint_transportation_mpg3", - carTravelElectricLabel.getText().replace(" mpge", "")); + "input_footprint_shopping_food_otherfood", + snacksDrinksLabel.getText().replace(" daily servings per person", "")); } + } + + /** + * Checks the house labels. + */ + public void checkHousingLabels() { if (!electricityField.getText().equals("0")) { userService.updateInput(userService.currentUser.getName(), "input_footprint_housing_electricity_dollars", @@ -464,69 +471,51 @@ public class CalculatorController { "input_footprint_housing_watersewage", waterUsageLabel.getText().replace("% of similar households", "")); } - if (!meatFishEggsLabel.getText().replace(" daily servings per person", "").equals("2.6")) { + } + + /** + * Checks the transport labels. + */ + public void checkTransportLabels() { + if (!publicTransitField.getText().equals("0")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_shopping_food_meatfisheggs", - meatFishEggsLabel.getText().replace(" daily servings per person", "")); + "input_footprint_transportation_publictrans", + publicTransitField.getText()); } - if (!grainsBakedGoodsLabel.getText() - .replace(" daily servings per person", "").equals("4.4")) { + if (!airplaneTravelField.getText().equals("0")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_shopping_food_cereals", - grainsBakedGoodsLabel.getText().replace(" daily servings per person", "")); + "input_footprint_transportation_airtotal", + airplaneTravelField.getText()); } - if (!dairyLabel.getText().replace(" daily servings per person", "").equals("2.4")) { + if (!carTravelGasolineField.getText().equals("0")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_shopping_food_dairy", - dairyLabel.getText().replace(" daily servings per person", "")); + "input_footprint_transportation_miles1", + carTravelGasolineField.getText()); } - if (!fruitsVegetablesLabel.getText() - .replace(" daily servings per person", "").equals("3.9")) { + if (!carTravelGasolineLabel.getText().replace(" km/L", "").equals("0")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_shopping_food_fruitvegetables", - fruitsVegetablesLabel.getText().replace(" daily servings per person", "")); + "input_footprint_transportation_mpg1", + carTravelGasolineLabel.getText().replace(" km/L", "")); } - if (!snacksDrinksLabel.getText().replace(" daily servings per person", "").equals("3.7")) { + if (!carTravelDieselField.getText().equals("0")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_shopping_food_otherfood", - snacksDrinksLabel.getText().replace(" daily servings per person", "")); + "input_footprint_transportation_miles2", + carTravelDieselField.getText()); } - if (!goodsLabel.getText().replace(" € / month", "").equals("1520")) { + if (!carTravelDieselLabel.getText().replace(" km/L", "").equals("0")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_shopping_goods_total", - goodsLabel.getText().replace("€ / month", "")); + "input_footprint_transportation_mpg2", + carTravelDieselLabel.getText().replace(" km/L", "")); } - if (!servicesLabel.getText().replace(" € / month", "").equals("3428")) { + if (!carTravelElectricField.getText().equals("0")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_shopping_services_total", - servicesLabel.getText().replace("€ / month", "")); + "input_footprint_transportation_miles3", + carTravelElectricField.getText()); } - if (localProduceCheckbox.isSelected()) { - localProduceCheckbox.setSelected(true); - userService.updateExtraInput(userService.currentUser.getName(), - "local_produce", true); + if (!carTravelElectricLabel.getText().replace(" km/Le", "").equals("0")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_transportation_mpg3", + carTravelElectricLabel.getText().replace(" km/Le", "")); } - if (bikeCheckbox.isSelected()) { - bikeCheckbox.setSelected(true); - userService.updateExtraInput(userService.currentUser.getName(), - "bike", true); - } - if (temperatureCheckbox.isSelected()) { - temperatureCheckbox.setSelected(true); - userService.updateExtraInput(userService.currentUser.getName(), - "temperature", true); - } - if (solarPanelsCheckbox.isSelected()) { - solarPanelsCheckbox.setSelected(true); - userService.updateExtraInput(userService.currentUser.getName(), - "solar_panels", true); - } - Float footprint = userService.saveFootprint(userService.currentUser.getName()); - Window owner = saveButton.getScene().getWindow(); - Stage current = (Stage) owner; - current.close(); - controller.updateLeaderboard(); - CalculatorController.AlertHelper.showAlert(Alert.AlertType.CONFIRMATION, - owner, "Footprint saved!", "Your footprint is saved!"); } } \ No newline at end of file diff --git a/src/Client/src/main/java/greenify/client/controller/DashBoardController.java b/src/Client/src/main/java/greenify/client/controller/DashBoardController.java index c1915f9..fe09235 100644 --- a/src/Client/src/main/java/greenify/client/controller/DashBoardController.java +++ b/src/Client/src/main/java/greenify/client/controller/DashBoardController.java @@ -17,7 +17,6 @@ import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.chart.PieChart; import javafx.scene.control.Button; -import javafx.scene.control.CheckBox; import javafx.scene.control.Label; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; @@ -168,16 +167,16 @@ public class DashBoardController { @FXML private ImageView achiev1image; @FXML - private CheckBox localProduce; - @FXML - private CheckBox loweringTemp; - @FXML - private CheckBox bike; - @FXML - private CheckBox solarPanels; - @FXML private Label hintText; @FXML + private Label solarPanels; + @FXML + private Label localProduce; + @FXML + private Label bike; + @FXML + private Label loweringTemp; + @FXML private Button refreshHintsButton; /** @@ -249,8 +248,8 @@ public class DashBoardController { public void sortScores(List users) throws InterruptedException { for (int i = 0; i < users.size(); i++) { for (int j = 0; j < users.size(); j++) { - Float firstScore = userService.getFootprint(users.get(i)); - Float secondScore = userService.getFootprint(users.get(j)); + Double firstScore = userService.getFootprint(users.get(i)); + Double secondScore = userService.getFootprint(users.get(j)); if (i > j && firstScore < secondScore) { String temp = users.get(i); users.set(i, users.get(j)); @@ -272,9 +271,9 @@ public class DashBoardController { public void sortDiffScores(List users) throws InterruptedException { for (int i = 0; i < users.size(); i++) { for (int j = 0; j < users.size(); j++) { - Float firstDiff = userService.getFirstFootprint(users.get(i)) - userService + Double firstDiff = userService.getFirstFootprint(users.get(i)) - userService .getFootprint(users.get(i)); - Float secondDiff = userService.getFirstFootprint(users.get(j)) - userService + Double secondDiff = userService.getFirstFootprint(users.get(j)) - userService .getFootprint(users.get(j)); if (i < j && firstDiff < secondDiff) { String temp = users.get(i); @@ -356,18 +355,11 @@ public class DashBoardController { dairy.setText(inputMap.get("input_footprint_shopping_food_dairy")); fruits.setText(inputMap.get("input_footprint_shopping_food_fruitvegetables")); snacks.setText(inputMap.get("input_footprint_shopping_food_otherfood")); - if (userService.getExtraInputs(userService.currentUser.getName()).get("local_produce")) { - localProduce.setSelected(true); - } - if (userService.getExtraInputs(userService.currentUser.getName()).get("bike")) { - bike.setSelected(true); - } - if (userService.getExtraInputs(userService.currentUser.getName()).get("temperature")) { - loweringTemp.setSelected(true); - } - if (userService.getExtraInputs(userService.currentUser.getName()).get("solar_panels")) { - solarPanels.setSelected(true); - } + Map extraMap = userService.getExtraInputs(userService.currentUser.getName()); + localProduce.setText(extraMap.get("local_produce")); + bike.setText(extraMap.get("bike")); + solarPanels.setText(extraMap.get("solar_panels")); + loweringTemp.setText(extraMap.get("temperature")); } /** @@ -380,9 +372,9 @@ public class DashBoardController { footprintLabel.setText("" + userService.getFootprint(userService.currentUser.getName())); firstFootprintLabel.setText("" + userService .getFirstFootprint(userService.currentUser.getName())); - Float diff = userService.getFirstFootprint(userService.currentUser.getName()) - userService + Double diff = userService.getFirstFootprint(userService.currentUser.getName()) - userService .getFootprint(userService.currentUser.getName()); - differenceLabel.setText( "" + diff); + differenceLabel.setText( "" + Math.round(diff * 10) / 10.0); usernameLabel.setText("" + userService.currentUser.getName()); addFadeTransition(userPane); System.out.println("display user"); @@ -390,7 +382,6 @@ public class DashBoardController { userPane.setVisible(true); activitiesPane.setVisible(false); friendsPane.setVisible(false); - } /** @@ -420,6 +411,13 @@ public class DashBoardController { current.close(); System.out.println("User is logged out"); + //global leaderboard + globalLeaderboard.getItems().clear(); + globalLeaderData.removeAll(); + //development leaderboard + developmentLeaderboard.getItems().clear(); + developmentData.removeAll(); + //load the fxml file Parent dash = Application.load(this.getClass().getClassLoader() .getResource("fxml/LoginWindow.fxml")); @@ -457,6 +455,9 @@ public class DashBoardController { calcStage.show(); } + /** + * Adds a random hint to the left. + */ public void addRandomHints() { FadeTransition fadeOut = new FadeTransition(Duration.millis(400), hintText); fadeOut.setFromValue(1.0); @@ -516,9 +517,9 @@ public class DashBoardController { sortDiffScores(userList); for (int j = 0; j < userList.size(); j++) { Friend user = new Friend(userList.get(j), userService.getFootprint(userList.get(j))); - Friend diffUser = new Friend(userList.get(j), userService - .getFirstFootprint(userList.get(j)) - - userService.getFootprint(userList.get(j))); + double diff = Math.round((userService.getFirstFootprint(userList.get(j)) + - userService.getFootprint(userList.get(j))) * 10) / 10.0; + Friend diffUser = new Friend(userList.get(j), diff); globalLeaderData.add(user); developmentData.add(diffUser); } @@ -548,9 +549,9 @@ public class DashBoardController { data.add(user); } for (int j = 0; j < wholeList.size(); j++) { - Friend diffUser = new Friend(wholeList.get(j), - userService.getFirstFootprint(wholeList.get(j)) - - userService.getFootprint(wholeList.get(j))); + double diff = Math.round((userService.getFirstFootprint(wholeList.get(j)) + - userService.getFootprint(wholeList.get(j))) * 10) / 10.0; + Friend diffUser = new Friend(wholeList.get(j), diff); friendLeaderData.add(diffUser); } friendsTable.setItems(data); @@ -632,6 +633,4 @@ public class DashBoardController { button.setOnMouseExited(e -> scaleDown.playFromStart()); } } - } - diff --git a/src/Client/src/main/java/greenify/client/controller/ExtraActivityController.java b/src/Client/src/main/java/greenify/client/controller/ExtraActivityController.java index edf723d..3e7829a 100644 --- a/src/Client/src/main/java/greenify/client/controller/ExtraActivityController.java +++ b/src/Client/src/main/java/greenify/client/controller/ExtraActivityController.java @@ -8,20 +8,28 @@ import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.event.ActionEvent; import javafx.fxml.FXML; +import javafx.scene.control.Alert; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.Slider; 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; @Controller public class ExtraActivityController { - @Autowired UserService userService; + @Autowired + CalculatorController calculatorController; + + @Autowired + DashBoardController controller; + @FXML private AnchorPane veganMealPane; @FXML @@ -254,7 +262,44 @@ public class ExtraActivityController { "solar_panels", true); } - private class TranslateButtonSkin extends ButtonSkin { + /** + * The method updates the values + */ + @SuppressWarnings("Duplicates") + public void save(ActionEvent event) throws InterruptedException { + Window owner = saveButton.getScene().getWindow(); + Float footprint = userService.saveFootprint(userService.currentUser.getName()); + controller.updateLeaderboard(); + Stage current = (Stage) owner; + current.close(); + UserController.AlertHelper.showAlert(Alert.AlertType.CONFIRMATION, owner, "Activities are added!", + "Your new activities are added!"); + } + + /** + * The method updates the values of extras. + * @param event user clicks to button + */ + @SuppressWarnings("Duplicates") + public void updateExtras(ActionEvent event) throws InterruptedException { + if (!bikeLabel.getText().replace(" km", "").equals("0")) { + userService.updateExtraInput(userService.currentUser.getName(), + "bike", + bikeLabel.getText().replace(" km", "")); + } + if (!solarPanelsLabel.getText().equals("0")) { + userService.updateExtraInput(userService.currentUser.getName(), + "solar_panels", + solarPanelsLabel.getText()); + } + if (!temperatureLabel.getText().replace(" Degrees", "").equals("0")) { + userService.updateExtraInput(userService.currentUser.getName(), + "bike", + temperatureLabel.getText().replace(" Degrees", "")); + } + } + + public class TranslateButtonSkin extends ButtonSkin { /** * button skin that sets a translate animation on entering and exiting the button. * @param button the button to set the animation for diff --git a/src/Client/src/main/java/greenify/client/controller/RegisterWindowController.java b/src/Client/src/main/java/greenify/client/controller/RegisterWindowController.java index 9ecad09..5073101 100644 --- a/src/Client/src/main/java/greenify/client/controller/RegisterWindowController.java +++ b/src/Client/src/main/java/greenify/client/controller/RegisterWindowController.java @@ -2,9 +2,11 @@ package greenify.client.controller; import greenify.client.Application; import greenify.client.rest.UserService; +import javafx.animation.FadeTransition; import javafx.animation.Interpolator; import javafx.animation.KeyFrame; import javafx.animation.KeyValue; +import javafx.animation.ParallelTransition; import javafx.animation.Timeline; import javafx.animation.TranslateTransition; import javafx.beans.value.ChangeListener; @@ -16,7 +18,6 @@ import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.Alert; import javafx.scene.control.Button; -import javafx.scene.control.CheckBox; import javafx.scene.control.Label; import javafx.scene.control.PasswordField; import javafx.scene.control.ScrollPane; @@ -39,12 +40,11 @@ import java.util.concurrent.TimeUnit; */ @Controller public class RegisterWindowController { - @Autowired UserService userService; @Autowired - DashBoardController controller; + ExtraActivityController extraActivityController; //navigation panes @FXML @@ -151,15 +151,6 @@ public class RegisterWindowController { //extra pane @FXML private AnchorPane extraPane; - @FXML - private CheckBox localProduceCheckbox; - @FXML - private CheckBox bikeCheckbox; - @FXML - private CheckBox temperatureCheckbox; - @FXML - private CheckBox solarPanelsCheckbox; - @FXML private TextField userNameText; @FXML @@ -230,8 +221,7 @@ public class RegisterWindowController { //register the user with the provided username and password try { userService.registerUser(userNameText.getText(), passwordField.getText()); - } - catch (RuntimeException ex) { + } catch (RuntimeException ex) { UserController.AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Username Error!", "This username has already been taken!"); return; @@ -270,9 +260,9 @@ public class RegisterWindowController { } }); - addSliderListenerCarUsage(carTravelGasolineSlider, carTravelGasolineLabel, " mpg"); - addSliderListenerCarUsage(carTravelDieselSlider, carTravelDieselLabel, " mpg"); - addSliderListenerCarUsage(carTravelElectricSlider, carTravelElectricLabel, " mpge"); + addSliderListenerCarUsage(carTravelGasolineSlider, carTravelGasolineLabel, " km/L"); + addSliderListenerCarUsage(carTravelDieselSlider, carTravelDieselLabel, " km/L"); + addSliderListenerCarUsage(carTravelElectricSlider, carTravelElectricLabel, " km/Le"); cleanEnergyPurchasedSlider.valueProperty().addListener(new ChangeListener() { @Override @@ -315,6 +305,7 @@ public class RegisterWindowController { }); } + @SuppressWarnings("Duplicates") private void addSliderListenerDailyServing(Slider slider, Label label) { DecimalFormat df = new DecimalFormat("0.0"); slider.valueProperty().addListener(new ChangeListener() { @@ -336,6 +327,23 @@ public class RegisterWindowController { }); } + /** + * adds a fade transition to the given node. + * @param node the node to add the transition to + */ + public void addFadeTransAnimation(Node node) { + FadeTransition fade = new FadeTransition(Duration.millis(350), node); + fade.setFromValue(0); + fade.setToValue(1.0); + TranslateTransition trans = new TranslateTransition(Duration.millis(350), node); + trans.setFromY(800); + trans.setToY(0); + ParallelTransition par = new ParallelTransition(); + par.setNode(travelPane); + par.getChildren().addAll(fade, trans); + par.play(); + } + private void addSlideInAnimation(Node node) { Timeline timeline = new Timeline(); KeyValue keyValue = new KeyValue(node.translateXProperty(), 0, Interpolator.EASE_OUT); @@ -351,6 +359,7 @@ public class RegisterWindowController { */ @SuppressWarnings("Duplicates") public void displayGetStarted(ActionEvent event) { + addFadeTransAnimation(getStartedPane); getStartedPane.setVisible(true); travelPane.setVisible(false); homePane.setVisible(false); @@ -366,7 +375,7 @@ public class RegisterWindowController { */ @SuppressWarnings("Duplicates") public void displayTravel(ActionEvent event) { - addSlideInAnimation(travelPane); + addFadeTransAnimation(travelPane); getStartedPane.setVisible(false); travelPane.setVisible(true); homePane.setVisible(false); @@ -383,6 +392,7 @@ public class RegisterWindowController { */ @SuppressWarnings("Duplicates") public void displayHome(ActionEvent event) { + addFadeTransAnimation(homePane); getStartedPane.setVisible(false); travelPane.setVisible(false); homePane.setVisible(true); @@ -398,6 +408,7 @@ public class RegisterWindowController { */ @SuppressWarnings("Duplicates") public void displayFood(ActionEvent event) { + addFadeTransAnimation(foodPane); getStartedPane.setVisible(false); travelPane.setVisible(false); homePane.setVisible(false); @@ -413,6 +424,7 @@ public class RegisterWindowController { */ @SuppressWarnings("Duplicates") public void displayShopping(ActionEvent event) { + addFadeTransAnimation(shoppingPane); getStartedPane.setVisible(false); travelPane.setVisible(false); homePane.setVisible(false); @@ -427,7 +439,10 @@ public class RegisterWindowController { * @param event the click of the designated button */ @SuppressWarnings("Duplicates") - public void displayExtra(ActionEvent event) { + public void displayExtra(ActionEvent event) throws IOException { + addFadeTransAnimation(extraPane); + extraPane.getChildren().setAll((Node) Application.load(this.getClass() + .getClassLoader().getResource("fxml/extraActivities.fxml"))); getStartedPane.setVisible(false); travelPane.setVisible(false); homePane.setVisible(false); @@ -456,46 +471,65 @@ public class RegisterWindowController { userService.updateInput(userService.currentUser.getName(), "input_size", peopleInHouseHoldLabel.getText()); } - if (!publicTransitField.getText().equals("0")) { + checkTransportLabels(); + checkHousingLabels(); + checkFoodLabels(); + if (!goodsLabel.getText().replace(" € / month", "").equals("1520")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_transportation_publictrans", - publicTransitField.getText()); + "input_footprint_shopping_goods_total", + goodsLabel.getText().replace("€ / month", "")); } - if (!airplaneTravelField.getText().equals("0")) { + if (!servicesLabel.getText().replace(" € / month", "").equals("3428")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_transportation_airtotal", - airplaneTravelField.getText()); + "input_footprint_shopping_services_total", + servicesLabel.getText().replace("€ / month", "")); } - if (!carTravelGasolineField.getText().equals("0")) { + Float firstFootprint = userService.saveFirstFootprint(userService.currentUser.getName()); + Float footprint = userService.saveFootprint(userService.currentUser.getName()); + Window owner = saveButton.getScene().getWindow(); + Stage current = (Stage) owner; + current.close(); + UserController.AlertHelper.showAlert(Alert.AlertType.CONFIRMATION, + owner, "Footprint saved!", "Your footprint is saved!"); + } + + /** + * Checks the food labels. + */ + public void checkFoodLabels() { + if (!meatFishEggsLabel.getText().replace(" daily servings per person", "").equals("2.6")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_transportation_miles1", - carTravelGasolineField.getText()); + "input_footprint_shopping_food_meatfisheggs", + meatFishEggsLabel.getText().replace(" daily servings per person", "")); } - if (!carTravelGasolineLabel.getText().replace(" mpg", "").equals("0")) { + if (!grainsBakedGoodsLabel.getText() + .replace(" daily servings per person", "").equals("4.4")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_transportation_mpg1", - carTravelGasolineLabel.getText().replace(" mpg", "")); + "input_footprint_shopping_food_cereals", + grainsBakedGoodsLabel.getText().replace(" daily servings per person", "")); } - if (!carTravelDieselField.getText().equals("0")) { + if (!dairyLabel.getText().replace(" daily servings per person", "").equals("2.4")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_transportation_miles2", - carTravelDieselField.getText()); + "input_footprint_shopping_food_dairy", + dairyLabel.getText().replace(" daily servings per person", "")); } - if (!carTravelDieselLabel.getText().replace(" mpg", "").equals("0")) { + if (!fruitsVegetablesLabel.getText() + .replace(" daily servings per person", "").equals("3.9")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_transportation_mpg2", - carTravelDieselLabel.getText().replace(" mpg", "")); + "input_footprint_shopping_food_fruitvegetables", + fruitsVegetablesLabel.getText().replace(" daily servings per person", "")); } - if (!carTravelElectricField.getText().equals("0")) { + if (!snacksDrinksLabel.getText().replace(" daily servings per person", "").equals("3.7")) { userService.updateInput(userService.currentUser.getName(), - "input_footprint_transportation_miles3", - carTravelElectricField.getText()); - } - if (!carTravelElectricLabel.getText().replace(" mpge", "").equals("0")) { - userService.updateInput(userService.currentUser.getName(), - "input_footprint_transportation_mpg3", - carTravelElectricLabel.getText().replace(" mpge", "")); + "input_footprint_shopping_food_otherfood", + snacksDrinksLabel.getText().replace(" daily servings per person", "")); } + } + + /** + * Checks the housing labels. + */ + public void checkHousingLabels() { if (!electricityField.getText().equals("0")) { userService.updateInput(userService.currentUser.getName(), "input_footprint_housing_electricity_dollars", @@ -526,63 +560,51 @@ public class RegisterWindowController { "input_footprint_housing_watersewage", waterUsageLabel.getText().replace("% of similar households", "")); } - if (!meatFishEggsLabel.getText().replace(" daily servings per person", "").equals("2.6")) { - userService.updateInput(userService.currentUser.getName(), - "input_footprint_shopping_food_meatfisheggs", - meatFishEggsLabel.getText().replace(" daily servings per person", "")); - } - if (!grainsBakedGoodsLabel.getText() - .replace(" daily servings per person", "").equals("4.4")) { - userService.updateInput(userService.currentUser.getName(), - "input_footprint_shopping_food_cereals", - grainsBakedGoodsLabel.getText().replace(" daily servings per person", "")); - } - if (!dairyLabel.getText().replace(" daily servings per person", "").equals("2.4")) { - userService.updateInput(userService.currentUser.getName(), - "input_footprint_shopping_food_dairy", - dairyLabel.getText().replace(" daily servings per person", "")); - } - if (!fruitsVegetablesLabel.getText() - .replace(" daily servings per person", "").equals("3.9")) { - userService.updateInput(userService.currentUser.getName(), - "input_footprint_shopping_food_fruitvegetables", - fruitsVegetablesLabel.getText().replace(" daily servings per person", "")); - } - if (!snacksDrinksLabel.getText().replace(" daily servings per person", "").equals("3.7")) { - userService.updateInput(userService.currentUser.getName(), - "input_footprint_shopping_food_otherfood", - snacksDrinksLabel.getText().replace(" daily servings per person", "")); - } - if (!goodsLabel.getText().replace(" € / month", "").equals("1520")) { - userService.updateInput(userService.currentUser.getName(), - "input_footprint_shopping_goods_total", - goodsLabel.getText().replace("€ / month", "")); - } - if (!servicesLabel.getText().replace(" € / month", "").equals("3428")) { - userService.updateInput(userService.currentUser.getName(), - "input_footprint_shopping_services_total", - servicesLabel.getText().replace("€ / month", "")); - } - if (localProduceCheckbox.isSelected()) { - userService.updateExtraInput(userService.currentUser.getName(), - "local_produce", true); - } - if (bikeCheckbox.isSelected()) { - userService.updateExtraInput(userService.currentUser.getName(), - "bike", true); - } - if (temperatureCheckbox.isSelected()) { - userService.updateExtraInput(userService.currentUser.getName(), - "temperature", true); - } - if (solarPanelsCheckbox.isSelected()) { - userService.updateExtraInput(userService.currentUser.getName(), - "solar_panels", true); - } - Float firstFootprint = userService.saveFirstFootprint(userService.currentUser.getName()); - Float footprint = userService.saveFootprint(userService.currentUser.getName()); - Window owner = saveButton.getScene().getWindow(); - Stage current = (Stage) owner; - current.close(); } -} + + /** + * Checks the transport labels. + */ + public void checkTransportLabels() { + 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().replace(" km/L", "")); + } + 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().replace(" km/L", "")); + } + if (!carTravelElectricField.getText().equals("0")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_transportation_miles3", + carTravelElectricField.getText()); + } + if (!carTravelElectricLabel.getText().replace(" km/Le", "").equals("0")) { + userService.updateInput(userService.currentUser.getName(), + "input_footprint_transportation_mpg3", + carTravelElectricLabel.getText().replace(" km/Le", "")); + } + } +} \ No newline at end of file diff --git a/src/Client/src/main/java/greenify/client/controller/UserController.java b/src/Client/src/main/java/greenify/client/controller/UserController.java index 19af71a..89160be 100644 --- a/src/Client/src/main/java/greenify/client/controller/UserController.java +++ b/src/Client/src/main/java/greenify/client/controller/UserController.java @@ -67,8 +67,7 @@ public class UserController { //log the user in with the userService method try { userService.loginUser(usernameField.getText(), passwordField.getText()); - } - catch (RuntimeException ex) { + } catch (RuntimeException ex) { AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Log-in Error!", "Your username or password is incorrect!"); return; @@ -143,3 +142,4 @@ public class UserController { } } + diff --git a/src/Client/src/main/java/greenify/client/rest/UserService.java b/src/Client/src/main/java/greenify/client/rest/UserService.java index bb19bf5..699137e 100644 --- a/src/Client/src/main/java/greenify/client/rest/UserService.java +++ b/src/Client/src/main/java/greenify/client/rest/UserService.java @@ -109,13 +109,13 @@ public class UserService { * @param value value of the input */ @SuppressWarnings("Duplicates") - public void updateExtraInput(String name, String inputName, Boolean value) { + public void updateExtraInput(String name, String inputName, String value) { HttpHeaders headers = new HttpHeaders(); headers.set("Accept", MediaType.APPLICATION_JSON_VALUE); UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://localhost:8080/setExtraInput") .queryParam("name", name) .queryParam("inputName", inputName) - .queryParam("value",value); + .queryParam("value", value); new HttpEntity<>(headers); System.out.println(builder.build().encode().toUri()); ResponseEntity authenticateResponse = this.restTemplate.getForEntity(builder.build() @@ -128,15 +128,16 @@ public class UserService { * @return returns the footprint score */ @SuppressWarnings("Duplicates") - public Float getFootprint(String name) { + public double getFootprint(String name) { HttpHeaders headers = new HttpHeaders(); headers.set("Accept", MediaType.APPLICATION_JSON_VALUE); UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://localhost:8080/getFootprint") .queryParam("name", name); new HttpEntity<>(headers); System.out.println(builder.build().encode().toUri()); - Float result = this.restTemplate.getForObject(builder + Float footprint = this.restTemplate.getForObject(builder .build().encode().toUri(), Float.class); + double result = Math.round(footprint * 10) / 10.0; return result; } @@ -145,7 +146,7 @@ public class UserService { * @param name name of the user * @return returns the footprint score */ - public Float getFirstFootprint(String name) { + public double getFirstFootprint(String name) { HttpHeaders headers = new HttpHeaders(); headers.set("Accept", MediaType.APPLICATION_JSON_VALUE); UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://localhost:8080/getFirst") @@ -154,7 +155,8 @@ public class UserService { System.out.println(builder.build().encode().toUri()); Float footprint = this.restTemplate.getForObject(builder .build().encode().toUri(), Float.class); - return footprint; + double result = Math.round(footprint * 10) / 10.0; + return result; } /** @@ -270,14 +272,14 @@ public class UserService { * @param name the username of the current user. */ @SuppressWarnings("Duplicates") - public Map getExtraInputs(String name) { + public Map getExtraInputs(String name) { HttpHeaders headers = new HttpHeaders(); headers.set("Accept", MediaType.APPLICATION_JSON_VALUE); UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://localhost:8080/getExtraInputs") .queryParam("name", name); HttpEntity entity = new HttpEntity<>(headers); System.out.println(builder.build().encode().toUri()); - Map result = this.restTemplate.getForObject(builder.build() + Map result = this.restTemplate.getForObject(builder.build() .encode().toUri(), Map.class); return result; } @@ -313,4 +315,4 @@ public class UserService { .build().encode().toUri(), List.class); return result; } -} +} \ No newline at end of file diff --git a/src/Client/src/main/resources/fxml/FirstCalculator.fxml b/src/Client/src/main/resources/fxml/FirstCalculator.fxml index 3304516..2fea111 100644 --- a/src/Client/src/main/resources/fxml/FirstCalculator.fxml +++ b/src/Client/src/main/resources/fxml/FirstCalculator.fxml @@ -1,26 +1,13 @@ - - - - - - - - - - - - - - + diff --git a/src/Client/src/main/resources/fxml/dashboard.fxml b/src/Client/src/main/resources/fxml/dashboard.fxml index 0a1061c..08737f9 100644 --- a/src/Client/src/main/resources/fxml/dashboard.fxml +++ b/src/Client/src/main/resources/fxml/dashboard.fxml @@ -2,7 +2,6 @@ - @@ -54,6 +53,7 @@ + - +