Compare commits
35 Commits
update/not
...
add/more_a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
377db10f13 | ||
|
|
50fb2078b0 | ||
|
|
123a767a75 | ||
|
|
e0e6744c95 | ||
|
|
cfc238af73 | ||
|
|
78e050751f | ||
|
|
37d43c8247 | ||
|
|
a704522a63 | ||
|
|
cefc4d2b4b | ||
|
|
222489a316 | ||
|
|
4b949db919 | ||
|
|
c8cbb25f5d | ||
|
|
c8d5dd99ae | ||
|
|
6d7e73586f | ||
|
|
12ca633461 | ||
|
|
7b6b8ead65 | ||
|
|
a206625082 | ||
|
|
425550c922 | ||
|
|
e6ecda5471 | ||
|
|
f6f74cd2aa | ||
|
|
d03deace57 | ||
|
|
4dd02649b8 | ||
|
|
9fd3b1cf5b | ||
|
|
fb22937864 | ||
|
|
dc432df120 | ||
|
|
a6a52688f2 | ||
|
|
ae7e36f757 | ||
|
|
917d3a64bb | ||
|
|
92ff0073e8 | ||
|
|
9ab4439f70 | ||
|
|
47c46b5458 | ||
|
|
02253cb645 | ||
|
|
b92e302f8b | ||
|
|
67b97eb331 | ||
|
|
daa1c838b4 |
@@ -36,12 +36,12 @@ test:
|
|||||||
- .gradle
|
- .gradle
|
||||||
|
|
||||||
# Code coverage badge
|
# Code coverage badge
|
||||||
# code-coverage:
|
#deploy:
|
||||||
# stage: code-coverage
|
# stage: code-coverage
|
||||||
# script:
|
# script:
|
||||||
# - mvn -B clean verify
|
# - gradle clean check
|
||||||
# after_script:
|
# after_script:
|
||||||
# - awk -F"," '{ instructions += $4 + $5; covered += $5 } END { print covered, "/", instructions, " instructions covered"; print 100*covered/instructions, "% instructrions covered" }' target/site/jacoco/jacoco.csv
|
# - awk -F"," '{ instructions += $4 + $5; covered += $5 } END { print covered, "/", instructions, " instructions covered"; print 100*covered/instructions, "% instructrions covered" }' target/site/jacoco/jacoco.csv
|
||||||
# - awk -F"," '{ instructions += $6 + $7; covered += $7 } END { print covered, "/", instructions, " branches covered"; print 100*covered/instructions, "% branches covered" }' target/site/jacoco/jacoco.csv
|
# - awk -F"," '{ instructions += $6 + $7; covered += $7 } END { print covered, "/", instructions, " branches covered"; print 100*covered/instructions, "% branches covered" }' target/site/jacoco/jacoco.csv
|
||||||
# - echo \"$(cat target/site/jacoco/jacoco.csv)% covered\"
|
# - echo \"$(cat target/site/jacoco/jacoco.csv)% covered\"
|
||||||
# coverage: '/(\d+.\d+) % +branches covered/'
|
# coverage: '/(\d+.\d+) % +branches covered/'
|
||||||
30
README.md
30
README.md
@@ -1,35 +1,33 @@
|
|||||||
# Greenify
|
# Greenify
|
||||||
The easiest way to save CO2 and help the environment! Enter your activities and find out your carbon footprint.
|
The easiest way to save CO2 and help the environment! Enter your activities and find out your carbon footprint.
|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
## Badges
|
||||||
|
[](https://gitlab.ewi.tudelft.nl/cse1105/2018-2019/oopp-group-43/template)
|
||||||
|
|
||||||
## Getting started
|
## Getting started
|
||||||
You can install greenify with gradle, if you already have gradle on your machine, run:
|
You can run greenify with gradle. To start the server, run:
|
||||||
|
|
||||||
```
|
```
|
||||||
gradle install something tralala
|
cd <FILE-LOCATION>/greenify/src/server
|
||||||
```
|
gradle build
|
||||||
|
gradle bootrun
|
||||||
Do you not have gradle on your machine, run:
|
|
||||||
|
|
||||||
```
|
|
||||||
./gradlew install something tralala
|
|
||||||
```
|
```
|
||||||
|
|
||||||
With the following you can start the application
|
With the following you can start the application
|
||||||
|
|
||||||
```
|
```
|
||||||
gradle greenify bootrun
|
cd <FILE-LOCATION>/greenify/src/client
|
||||||
```
|
gradle build
|
||||||
|
gradle bootrun
|
||||||
or without gradle on your device:
|
|
||||||
|
|
||||||
```
|
|
||||||
./gradlew greenify bootrun
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Running the tests
|
## Running the tests
|
||||||
The tests cover all non-GUI code:
|
The tests cover all non-GUI code:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
cd <FILE-LOCATION>/greenify
|
||||||
gradle check
|
gradle check
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -16,57 +16,71 @@ public class Hints {
|
|||||||
*/
|
*/
|
||||||
private void initHints() {
|
private void initHints() {
|
||||||
this.hints.add("Buying local produce will not only decrease your carbon "
|
this.hints.add("Buying local produce will not only decrease your carbon "
|
||||||
+ "footprint, but also help your local economy: A win-win!");
|
+ "footprint, but it will also help your local economy: A win-win!");
|
||||||
this.hints.add("Did you know that a gas oven only uses 6% of its energy "
|
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%.");
|
+ "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 "
|
this.hints.add("70% of the deforestation of the Amazon rainforest is to provide land "
|
||||||
+ "cattle ranches.");
|
+ "for cattle ranches.");
|
||||||
this.hints.add("Research shows that reducing meat consumption can increase"
|
this.hints.add("Research shows that reducing meat consumption can "
|
||||||
+ " your life span by 3.6 years");
|
+ "increase your life span by 3,6 years");
|
||||||
this.hints.add("Vegetarians have a lower risk of getting heart disease, high blood "
|
this.hints.add("Vegetarians have a lower risk of getting: Heart disease, high blood "
|
||||||
+ "pressure, diabetes and cancer than meat eaters.");
|
+ "pressure, diabetes and cancer than meat eaters.");
|
||||||
this.hints.add("Did you know? The carbon footprint of a vegetarian diet is about half "
|
this.hints.add("The carbon footprint of a vegetarian diet is about half "
|
||||||
+ "that of a meat-lover’s diet!");
|
+ "that of a meat-lover’s diet!");
|
||||||
this.hints.add("Cycling is good for the environment AND for your body, "
|
this.hints.add("Cycling is good for the environment and for your body, "
|
||||||
+ "so why not grab your bike instead of your car?");
|
+ "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"
|
this.hints.add("If we could capture all of the sun’s energy shining on the Earth for just "
|
||||||
+ " for just one hour, we could power the entire world for one year!");
|
+ "one hour, we could power the entire world for one whole year!");
|
||||||
this.hints.add("27,000 trees are cut down each day so we can have toilet paper.");
|
this.hints.add("27,000 trees are cut down every day so we can have toilet paper.");
|
||||||
this.hints.add("A glass bottle made in our time will take more than 4,000 years "
|
this.hints.add("Recycle glass bottles! A glass bottle made now will take "
|
||||||
+ "to decompose.");
|
+ "more than 4,000 years to decompose.");
|
||||||
this.hints.add("Don't forget to turn off the lights and heating in rooms"
|
this.hints.add("Don't forget to turn off the lights and heating in rooms"
|
||||||
+ " you're not using at the moment!");
|
+ " you're not using at the moment. Save some energy!");
|
||||||
this.hints.add("Did you know that about 4.5% of the Dutch population does not eat meat?");
|
this.hints.add("Did you know that about 4,5% of the Dutch population does not eat meat?");
|
||||||
this.hints.add("Reuse your bags when you go grocery shopping. You will save plastic bags!");
|
this.hints.add("Reuse your bags when you go grocery shopping. You will save "
|
||||||
|
+ "plastic bags and won't have a lot of unused bags at home!");
|
||||||
this.hints.add("An estimated 250 million trees can be saved each year "
|
this.hints.add("An estimated 250 million trees can be saved each year "
|
||||||
+ "if every published newspaper would be recycled.");
|
+ "if every published newspaper would be recycled!");
|
||||||
this.hints.add("About 88,000 jobs were created in 2015 through the wind power sector.");
|
this.hints.add("About 88,000 jobs were created in 2015 through the wind power sector. "
|
||||||
this.hints.add("You can use LED lights in your home to save energy!");
|
+ "That is a lot of jobs");
|
||||||
|
this.hints.add("You can use LED lights in your home to save energy! "
|
||||||
|
+ "They make light from about 85% of their energy");
|
||||||
this.hints.add("If you isolate your home well, it will be warmer, "
|
this.hints.add("If you isolate your home well, it will be warmer, "
|
||||||
+ "and you'll save energy as well!");
|
+ "and you'll save energy as well! No need to wear sweaters anymore");
|
||||||
this.hints.add("Do you have leftovers? Donate them to food kitchens."
|
this.hints.add("Do you have leftovers? Donate them to food kitchens."
|
||||||
+ " This way you won't waste"
|
+ " This way you won't waste"
|
||||||
+ " food, and you'll help people at the same time!");
|
+ " food, and you'll help a lot of people at the same time!");
|
||||||
this.hints.add("A lot of coffee places give you a discount if you bring your own cup. "
|
this.hints.add("A lot of coffee places give you a discount if you bring your own cup. "
|
||||||
+ "Get rid of those disposable cups!");
|
+ "Get rid of disposable cups!");
|
||||||
this.hints.add("When shopping, look for products with minimal to no packaging, "
|
this.hints.add("When shopping, look for products with minimal to no packaging, "
|
||||||
+ "or at least packaging made from recycled items. ");
|
+ "or packaging made from recycled items. ");
|
||||||
this.hints.add("If you order food, you can ask the restaurant to not include "
|
this.hints.add("If you order food, you can ask the restaurant to not include "
|
||||||
+ "utensils and napkins, it saves plastic and paper.");
|
+ "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("It takes about 66 days to form a new habit, keep going, you'll get there!");
|
||||||
this.hints.add("Get yourself a nice reusable water bottle! It's cheaper and better for "
|
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 one every time it's empty.");
|
||||||
this.hints.add("Recycle glass bottles!"
|
this.hints.add("Only 1% of our planet’s water supply can be used a drinkwater."
|
||||||
+ " A glass bottle made in our time will take more than 4,000 years"
|
|
||||||
+ " to decompose.");
|
|
||||||
this.hints.add("Only 1% of our planet’s water supply can be used."
|
|
||||||
+ " 97% is ocean water and 2% is frozen solid in the Arctic, for now.");
|
+ " 97% is ocean water and 2% is frozen solid in the Arctic, for now.");
|
||||||
this.hints.add("Plastic bad");
|
this.hints.add("For every two million tons of paper and glass, collected in "
|
||||||
|
+ "the Netherlands, close to 90% gets recycled and used to make new products");
|
||||||
|
this.hints.add("In the Netherlands: Whenever you purchase any new, electronic or household "
|
||||||
|
+ "equipment, you will automatically be charged a ‘recycling tax’ on it. This is "
|
||||||
|
+ "also known as ‘removal tax’, or ‘verwijderingsbijdrage’ in Dutch");
|
||||||
|
this.hints.add("Second only to Germany, the Netherlands leads the world in recycling"
|
||||||
|
+ ", with 65 percent of all waste recycled.");
|
||||||
|
this.hints.add("If tbe back of your fridge is dusty, it can increase "
|
||||||
|
+ "energy consumption by 30 per cent.");
|
||||||
|
this.hints.add("Underinflated tyres decrease fuel economy by up to three percent and"
|
||||||
|
+ " lead to increased pollution and higher greenhouse gas emissions.");
|
||||||
|
this.hints.add("Meat production is extremely resource-intensive. "
|
||||||
|
+ "If you gave it up just once a week, you would save the 840 gallons "
|
||||||
|
+ "of fresh water it takes to produce a single serving.");
|
||||||
|
this.hints.add("Plastic bad, very bad.");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method gets a random String.
|
* This seeks out a random hint from the list of strings.
|
||||||
* @return the random hint.
|
* @return the random string hint.
|
||||||
*/
|
*/
|
||||||
public String randomHint() {
|
public String randomHint() {
|
||||||
Random rand = new Random();
|
Random rand = new Random();
|
||||||
|
|||||||
@@ -398,7 +398,11 @@ public class CalculatorController {
|
|||||||
"input_footprint_shopping_services_total",
|
"input_footprint_shopping_services_total",
|
||||||
servicesLabel.getText().replace("€ / month", ""));
|
servicesLabel.getText().replace("€ / month", ""));
|
||||||
}
|
}
|
||||||
extraActivityController.updateExtras();
|
try {
|
||||||
|
extraActivityController.updateExtras();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
System.out.println("continue");
|
||||||
|
}
|
||||||
Float footprint = userService.saveFootprint(userService.currentUser.getName());
|
Float footprint = userService.saveFootprint(userService.currentUser.getName());
|
||||||
Window owner = saveButton.getScene().getWindow();
|
Window owner = saveButton.getScene().getWindow();
|
||||||
controller.updateLeaderboard();
|
controller.updateLeaderboard();
|
||||||
|
|||||||
@@ -185,14 +185,18 @@ public class DashBoardController {
|
|||||||
@FXML
|
@FXML
|
||||||
private Label hintText;
|
private Label hintText;
|
||||||
@FXML
|
@FXML
|
||||||
private Label solarPanels;
|
private Label veganMeal;
|
||||||
@FXML
|
@FXML
|
||||||
private Label localProduce;
|
private Label localProduce;
|
||||||
@FXML
|
@FXML
|
||||||
private Label bike;
|
private Label bike;
|
||||||
@FXML
|
@FXML
|
||||||
|
private Label publicTrans;
|
||||||
|
@FXML
|
||||||
private Label loweringTemp;
|
private Label loweringTemp;
|
||||||
@FXML
|
@FXML
|
||||||
|
private Label solarPanels;
|
||||||
|
@FXML
|
||||||
private Button achiev1Tip;
|
private Button achiev1Tip;
|
||||||
@FXML
|
@FXML
|
||||||
private Button achiev2Tip;
|
private Button achiev2Tip;
|
||||||
@@ -237,20 +241,6 @@ public class DashBoardController {
|
|||||||
developmentScore.setCellValueFactory(new PropertyValueFactory<>("Score"));
|
developmentScore.setCellValueFactory(new PropertyValueFactory<>("Score"));
|
||||||
friendUser.setCellValueFactory(new PropertyValueFactory<>("Friend"));
|
friendUser.setCellValueFactory(new PropertyValueFactory<>("Friend"));
|
||||||
friendScore.setCellValueFactory(new PropertyValueFactory<>("Score"));
|
friendScore.setCellValueFactory(new PropertyValueFactory<>("Score"));
|
||||||
if (pieChart != null) {
|
|
||||||
ObservableList<PieChart.Data> pieChartData =
|
|
||||||
FXCollections.observableArrayList(
|
|
||||||
new PieChart.Data("Vegan Meal", 100),
|
|
||||||
new PieChart.Data("Public Transport", 200),
|
|
||||||
new PieChart.Data("Home Temperature", 50),
|
|
||||||
new PieChart.Data("Bike", 75),
|
|
||||||
new PieChart.Data("Local Product", 110),
|
|
||||||
new PieChart.Data("Solar Panel", 300)
|
|
||||||
);
|
|
||||||
pieChart.setTitle("FOOTPRINT DISTRIBUTION");
|
|
||||||
pieChart.setMaxSize(1000, 1000);
|
|
||||||
pieChart.setData(pieChartData);
|
|
||||||
}
|
|
||||||
List<String> friendList = userService.getFriendNames(userService.currentUser.getName());
|
List<String> friendList = userService.getFriendNames(userService.currentUser.getName());
|
||||||
for (int i = 0; i < friendList.size(); i++) {
|
for (int i = 0; i < friendList.size(); i++) {
|
||||||
Friend friend = new Friend(friendList.get(i),
|
Friend friend = new Friend(friendList.get(i),
|
||||||
@@ -260,6 +250,7 @@ public class DashBoardController {
|
|||||||
friendsTable.setItems(data);
|
friendsTable.setItems(data);
|
||||||
updateLeaderboard();
|
updateLeaderboard();
|
||||||
updateAchievements();
|
updateAchievements();
|
||||||
|
updatePiechart();
|
||||||
calculateFootPrintButton.setSkin(new ClickButtonSkin(calculateFootPrintButton));
|
calculateFootPrintButton.setSkin(new ClickButtonSkin(calculateFootPrintButton));
|
||||||
addFriendButton.setSkin(new ClickButtonSkin(addFriendButton));
|
addFriendButton.setSkin(new ClickButtonSkin(addFriendButton));
|
||||||
addExtraActivityButton.setSkin(new ClickButtonSkin(addExtraActivityButton));
|
addExtraActivityButton.setSkin(new ClickButtonSkin(addExtraActivityButton));
|
||||||
@@ -317,7 +308,7 @@ public class DashBoardController {
|
|||||||
* Sorts the scores of users.
|
* Sorts the scores of users.
|
||||||
* @param users the list of users
|
* @param users the list of users
|
||||||
*/
|
*/
|
||||||
private void sortScores(List<String> users) {
|
public void sortScores(List<String> users) throws InterruptedException {
|
||||||
for (int i = 0; i < users.size(); i++) {
|
for (int i = 0; i < users.size(); i++) {
|
||||||
for (int j = 0; j < users.size(); j++) {
|
for (int j = 0; j < users.size(); j++) {
|
||||||
Double first = userService.getFootprint(users.get(i));
|
Double first = userService.getFootprint(users.get(i));
|
||||||
@@ -340,7 +331,7 @@ public class DashBoardController {
|
|||||||
* Sorts the scores of users.
|
* Sorts the scores of users.
|
||||||
* @param users the list of users
|
* @param users the list of users
|
||||||
*/
|
*/
|
||||||
private List<String> sortDiffScores(List<String> users) throws InterruptedException {
|
public List<String> sortDiffScores(List<String> users) throws InterruptedException {
|
||||||
for (int i = 0; i < users.size(); i++) {
|
for (int i = 0; i < users.size(); i++) {
|
||||||
for (int j = 0; j < users.size(); j++) {
|
for (int j = 0; j < users.size(); j++) {
|
||||||
Double firstDiff = userService.getFirstFootprint(users.get(i)) - userService
|
Double firstDiff = userService.getFirstFootprint(users.get(i)) - userService
|
||||||
@@ -366,7 +357,7 @@ public class DashBoardController {
|
|||||||
* Adds a fade transition for switching between the different panes.
|
* Adds a fade transition for switching between the different panes.
|
||||||
* @param node the node on which the transition needs to act
|
* @param node the node on which the transition needs to act
|
||||||
*/
|
*/
|
||||||
private void addFadeTransition(Node node) {
|
public void addFadeTransition(Node node) {
|
||||||
fadeTrans = new FadeTransition(Duration.millis(400), node);
|
fadeTrans = new FadeTransition(Duration.millis(400), node);
|
||||||
fadeTrans.setFromValue(0);
|
fadeTrans.setFromValue(0);
|
||||||
fadeTrans.setToValue(1.0);
|
fadeTrans.setToValue(1.0);
|
||||||
@@ -430,17 +421,19 @@ public class DashBoardController {
|
|||||||
snacks.setText(inputMap.get("input_footprint_shopping_food_otherfood"));
|
snacks.setText(inputMap.get("input_footprint_shopping_food_otherfood"));
|
||||||
Map<String, String> extraMap = userService
|
Map<String, String> extraMap = userService
|
||||||
.getExtraInputs(userService.currentUser.getName());
|
.getExtraInputs(userService.currentUser.getName());
|
||||||
|
veganMeal.setText(extraMap.get("vegan"));
|
||||||
localProduce.setText(extraMap.get("local_produce"));
|
localProduce.setText(extraMap.get("local_produce"));
|
||||||
bike.setText(extraMap.get("bike"));
|
bike.setText(extraMap.get("bike"));
|
||||||
solarPanels.setText(extraMap.get("solar_panels"));
|
publicTrans.setText(extraMap.get("public_transport"));
|
||||||
loweringTemp.setText(extraMap.get("temperature"));
|
loweringTemp.setText(extraMap.get("temperature"));
|
||||||
|
solarPanels.setText(extraMap.get("solar_panels"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Displays the user profile pane.
|
* Displays the user profile pane.
|
||||||
* @param event the event (clicking the button)
|
* @param event the event (clicking the button)
|
||||||
*/
|
*/
|
||||||
public void displayUser(ActionEvent event) {
|
public void displayUser(ActionEvent event) throws InterruptedException {
|
||||||
System.out.println(userService.currentUser.getName());
|
System.out.println(userService.currentUser.getName());
|
||||||
System.out.println(userService.getFootprint(userService.currentUser.getName()));
|
System.out.println(userService.getFootprint(userService.currentUser.getName()));
|
||||||
footprintLabel.setText("" + userService.getFootprint(userService.currentUser.getName()));
|
footprintLabel.setText("" + userService.getFootprint(userService.currentUser.getName()));
|
||||||
@@ -456,6 +449,7 @@ public class DashBoardController {
|
|||||||
userPane.setVisible(true);
|
userPane.setVisible(true);
|
||||||
activitiesPane.setVisible(false);
|
activitiesPane.setVisible(false);
|
||||||
friendsPane.setVisible(false);
|
friendsPane.setVisible(false);
|
||||||
|
updatePiechart();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -516,6 +510,7 @@ public class DashBoardController {
|
|||||||
* Opens the calculator.
|
* Opens the calculator.
|
||||||
* @throws IOException if the Application doesn't load.
|
* @throws IOException if the Application doesn't load.
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("Duplicates")
|
||||||
public void openCalculator() throws IOException, InterruptedException {
|
public void openCalculator() throws IOException, InterruptedException {
|
||||||
Parent calc = Application.load(this.getClass().getClassLoader()
|
Parent calc = Application.load(this.getClass().getClassLoader()
|
||||||
.getResource("fxml/calculator.fxml"));
|
.getResource("fxml/calculator.fxml"));
|
||||||
@@ -530,7 +525,7 @@ public class DashBoardController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a random hint to the left.
|
* This method adds a random hint to the side bar.
|
||||||
*/
|
*/
|
||||||
public void addRandomHints() {
|
public void addRandomHints() {
|
||||||
FadeTransition fadeOut = new FadeTransition(Duration.millis(400), hintText);
|
FadeTransition fadeOut = new FadeTransition(Duration.millis(400), hintText);
|
||||||
@@ -579,6 +574,7 @@ public class DashBoardController {
|
|||||||
* Leaderboard is updating.
|
* Leaderboard is updating.
|
||||||
* @throws InterruptedException throws exception
|
* @throws InterruptedException throws exception
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("Duplicates")
|
||||||
public void updateLeaderboard() throws InterruptedException {
|
public void updateLeaderboard() throws InterruptedException {
|
||||||
//global leaderboard
|
//global leaderboard
|
||||||
globalLeaderboard.getItems().clear();
|
globalLeaderboard.getItems().clear();
|
||||||
@@ -603,10 +599,37 @@ public class DashBoardController {
|
|||||||
developmentLeaderboard.setItems(developmentData);
|
developmentLeaderboard.setItems(developmentData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The method updating piechart.
|
||||||
|
* @throws InterruptedException exception
|
||||||
|
*/
|
||||||
|
public void updatePiechart() throws InterruptedException {
|
||||||
|
Map<String, String> resultMap = userService.getResults(userService.currentUser.getName());
|
||||||
|
if (pieChart != null) {
|
||||||
|
ObservableList<PieChart.Data> pieChartData =
|
||||||
|
FXCollections.observableArrayList(
|
||||||
|
new PieChart.Data("Transport",
|
||||||
|
Double.parseDouble(resultMap.get("transport"))),
|
||||||
|
new PieChart.Data("Housing",
|
||||||
|
Double.parseDouble(resultMap.get("housing"))),
|
||||||
|
new PieChart.Data("Food",
|
||||||
|
Double.parseDouble(resultMap.get("food"))),
|
||||||
|
new PieChart.Data("Goods",
|
||||||
|
Double.parseDouble(resultMap.get("goods"))),
|
||||||
|
new PieChart.Data("Services",
|
||||||
|
Double.parseDouble(resultMap.get("services")))
|
||||||
|
);
|
||||||
|
pieChart.setTitle("FOOTPRINT DISTRIBUTION");
|
||||||
|
pieChart.setMaxSize(1000, 1000);
|
||||||
|
pieChart.setData(pieChartData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Friends tables are updating.
|
* Friends tables are updating.
|
||||||
* @throws InterruptedException throws exception
|
* @throws InterruptedException throws exception
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("Duplicates")
|
||||||
public void updateFriends() throws InterruptedException {
|
public void updateFriends() throws InterruptedException {
|
||||||
List<String> wholeList = userService.getFriendNames(userService.currentUser.getName());
|
List<String> wholeList = userService.getFriendNames(userService.currentUser.getName());
|
||||||
wholeList.add(userService.currentUser.getName());
|
wholeList.add(userService.currentUser.getName());
|
||||||
|
|||||||
@@ -2,12 +2,15 @@ package greenify.client.controller;
|
|||||||
|
|
||||||
import com.sun.javafx.scene.control.skin.ButtonSkin;
|
import com.sun.javafx.scene.control.skin.ButtonSkin;
|
||||||
import greenify.client.rest.UserService;
|
import greenify.client.rest.UserService;
|
||||||
|
import javafx.animation.FadeTransition;
|
||||||
|
import javafx.animation.ParallelTransition;
|
||||||
import javafx.animation.ScaleTransition;
|
import javafx.animation.ScaleTransition;
|
||||||
import javafx.animation.TranslateTransition;
|
import javafx.animation.TranslateTransition;
|
||||||
import javafx.beans.value.ChangeListener;
|
import javafx.beans.value.ChangeListener;
|
||||||
import javafx.beans.value.ObservableValue;
|
import javafx.beans.value.ObservableValue;
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.scene.Node;
|
||||||
import javafx.scene.control.Button;
|
import javafx.scene.control.Button;
|
||||||
import javafx.scene.control.Label;
|
import javafx.scene.control.Label;
|
||||||
import javafx.scene.control.Slider;
|
import javafx.scene.control.Slider;
|
||||||
@@ -129,12 +132,26 @@ public class ExtraActivityController {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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.setFromX(-800);
|
||||||
|
trans.setToX(0);
|
||||||
|
ParallelTransition par = new ParallelTransition();
|
||||||
|
par.setNode(node);
|
||||||
|
par.getChildren().addAll(fade, trans);
|
||||||
|
par.play();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* displays the vegetarian meal section.
|
* displays the vegetarian meal section.
|
||||||
* @param event the click of the designated button
|
* @param event the click of the designated button
|
||||||
*/
|
*/
|
||||||
public void displayVeganMeal(ActionEvent event) {
|
public void displayVeganMeal(ActionEvent event) {
|
||||||
// System.out.println("display vm");
|
// System.out.println("display vm");
|
||||||
|
addFadeTransAnimation(veganMealPane);
|
||||||
veganMealPane.setVisible(true);
|
veganMealPane.setVisible(true);
|
||||||
bikePane.setVisible(false);
|
bikePane.setVisible(false);
|
||||||
temperaturePane.setVisible(false);
|
temperaturePane.setVisible(false);
|
||||||
@@ -149,6 +166,7 @@ public class ExtraActivityController {
|
|||||||
*/
|
*/
|
||||||
public void displayBike(ActionEvent event) {
|
public void displayBike(ActionEvent event) {
|
||||||
// System.out.println("display b");
|
// System.out.println("display b");
|
||||||
|
addFadeTransAnimation(bikePane);
|
||||||
veganMealPane.setVisible(false);
|
veganMealPane.setVisible(false);
|
||||||
bikePane.setVisible(true);
|
bikePane.setVisible(true);
|
||||||
temperaturePane.setVisible(false);
|
temperaturePane.setVisible(false);
|
||||||
@@ -163,6 +181,7 @@ public class ExtraActivityController {
|
|||||||
*/
|
*/
|
||||||
public void displayTemperature(ActionEvent event) {
|
public void displayTemperature(ActionEvent event) {
|
||||||
// System.out.println("display t");
|
// System.out.println("display t");
|
||||||
|
addFadeTransAnimation(temperaturePane);
|
||||||
veganMealPane.setVisible(false);
|
veganMealPane.setVisible(false);
|
||||||
bikePane.setVisible(false);
|
bikePane.setVisible(false);
|
||||||
temperaturePane.setVisible(true);
|
temperaturePane.setVisible(true);
|
||||||
@@ -177,6 +196,7 @@ public class ExtraActivityController {
|
|||||||
*/
|
*/
|
||||||
public void displaySolarPanel(ActionEvent event) {
|
public void displaySolarPanel(ActionEvent event) {
|
||||||
// System.out.println("display sp");
|
// System.out.println("display sp");
|
||||||
|
addFadeTransAnimation(solarPanelPane);
|
||||||
veganMealPane.setVisible(false);
|
veganMealPane.setVisible(false);
|
||||||
bikePane.setVisible(false);
|
bikePane.setVisible(false);
|
||||||
temperaturePane.setVisible(false);
|
temperaturePane.setVisible(false);
|
||||||
@@ -190,6 +210,7 @@ public class ExtraActivityController {
|
|||||||
* @param event the click of the designated button
|
* @param event the click of the designated button
|
||||||
*/
|
*/
|
||||||
public void displayLocalProduce(ActionEvent event) {
|
public void displayLocalProduce(ActionEvent event) {
|
||||||
|
addFadeTransAnimation(localProducePane);
|
||||||
veganMealPane.setVisible(false);
|
veganMealPane.setVisible(false);
|
||||||
bikePane.setVisible(false);
|
bikePane.setVisible(false);
|
||||||
temperaturePane.setVisible(false);
|
temperaturePane.setVisible(false);
|
||||||
@@ -203,6 +224,7 @@ public class ExtraActivityController {
|
|||||||
* @param event the click of the designated button
|
* @param event the click of the designated button
|
||||||
*/
|
*/
|
||||||
public void displayPublicTransport(ActionEvent event) {
|
public void displayPublicTransport(ActionEvent event) {
|
||||||
|
addFadeTransAnimation(publicTransportPane);
|
||||||
veganMealPane.setVisible(false);
|
veganMealPane.setVisible(false);
|
||||||
bikePane.setVisible(false);
|
bikePane.setVisible(false);
|
||||||
temperaturePane.setVisible(false);
|
temperaturePane.setVisible(false);
|
||||||
@@ -221,7 +243,7 @@ public class ExtraActivityController {
|
|||||||
Float footprint = userService.saveFootprint(userService.currentUser.getName());
|
Float footprint = userService.saveFootprint(userService.currentUser.getName());
|
||||||
controller.updateLeaderboard();
|
controller.updateLeaderboard();
|
||||||
controller.updateAchievements();
|
controller.updateAchievements();
|
||||||
} catch (Exception ex) {
|
} catch (InterruptedException ex) {
|
||||||
System.out.println("continue");
|
System.out.println("continue");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -263,7 +285,7 @@ public class ExtraActivityController {
|
|||||||
Float footprint = userService.saveFootprint(userService.currentUser.getName());
|
Float footprint = userService.saveFootprint(userService.currentUser.getName());
|
||||||
controller.updateAchievements();
|
controller.updateAchievements();
|
||||||
controller.updateLeaderboard();
|
controller.updateLeaderboard();
|
||||||
} catch (Exception ex) {
|
} catch (NullPointerException ex) {
|
||||||
System.out.println("continue");
|
System.out.println("continue");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -278,7 +300,7 @@ public class ExtraActivityController {
|
|||||||
Float footprint = userService.saveFootprint(userService.currentUser.getName());
|
Float footprint = userService.saveFootprint(userService.currentUser.getName());
|
||||||
controller.updateAchievements();
|
controller.updateAchievements();
|
||||||
controller.updateLeaderboard();
|
controller.updateLeaderboard();
|
||||||
} catch (Exception ex) {
|
} catch (NullPointerException ex) {
|
||||||
System.out.println("continue");
|
System.out.println("continue");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package greenify.client.controller;
|
package greenify.client.controller;
|
||||||
|
|
||||||
|
import com.sun.javafx.scene.control.skin.ButtonSkin;
|
||||||
import greenify.client.Application;
|
import greenify.client.Application;
|
||||||
import greenify.client.rest.UserService;
|
import greenify.client.rest.UserService;
|
||||||
import javafx.animation.FadeTransition;
|
import javafx.animation.FadeTransition;
|
||||||
@@ -7,8 +8,10 @@ import javafx.animation.Interpolator;
|
|||||||
import javafx.animation.KeyFrame;
|
import javafx.animation.KeyFrame;
|
||||||
import javafx.animation.KeyValue;
|
import javafx.animation.KeyValue;
|
||||||
import javafx.animation.ParallelTransition;
|
import javafx.animation.ParallelTransition;
|
||||||
|
import javafx.animation.ScaleTransition;
|
||||||
import javafx.animation.Timeline;
|
import javafx.animation.Timeline;
|
||||||
import javafx.animation.TranslateTransition;
|
import javafx.animation.TranslateTransition;
|
||||||
|
|
||||||
import javafx.beans.value.ChangeListener;
|
import javafx.beans.value.ChangeListener;
|
||||||
import javafx.beans.value.ObservableValue;
|
import javafx.beans.value.ObservableValue;
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
@@ -30,6 +33,7 @@ import javafx.stage.Window;
|
|||||||
import javafx.util.Duration;
|
import javafx.util.Duration;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.client.HttpClientErrorException;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
@@ -171,6 +175,8 @@ public class RegisterWindowController {
|
|||||||
addSlideAnimation(1100, passwordField, 300);
|
addSlideAnimation(1100, passwordField, 300);
|
||||||
TimeUnit.MILLISECONDS.sleep(300);
|
TimeUnit.MILLISECONDS.sleep(300);
|
||||||
addSlideAnimation(1100, passwordField2, -420);
|
addSlideAnimation(1100, passwordField2, -420);
|
||||||
|
|
||||||
|
signUpButton.setSkin(new registerButtonSkin(signUpButton));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -221,7 +227,7 @@ public class RegisterWindowController {
|
|||||||
//register the user with the provided username and password
|
//register the user with the provided username and password
|
||||||
try {
|
try {
|
||||||
userService.registerUser(userNameText.getText(), passwordField.getText());
|
userService.registerUser(userNameText.getText(), passwordField.getText());
|
||||||
} catch (Exception ex) {
|
} catch (HttpClientErrorException ex) {
|
||||||
UserController.AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Username Error!",
|
UserController.AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Username Error!",
|
||||||
"This username has already been taken!");
|
"This username has already been taken!");
|
||||||
return;
|
return;
|
||||||
@@ -486,7 +492,7 @@ public class RegisterWindowController {
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
extraActivityController.updateExtras();
|
extraActivityController.updateExtras();
|
||||||
} catch (Exception ex) {
|
} catch (NullPointerException ex) {
|
||||||
System.out.println("Continue");
|
System.out.println("Continue");
|
||||||
}
|
}
|
||||||
Float firstFootprint = userService.saveFirstFootprint(userService.currentUser.getName());
|
Float firstFootprint = userService.saveFirstFootprint(userService.currentUser.getName());
|
||||||
@@ -612,4 +618,37 @@ public class RegisterWindowController {
|
|||||||
carTravelElectricLabel.getText().replace(" km/Le", ""));
|
carTravelElectricLabel.getText().replace(" km/Le", ""));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("Duplicates")
|
||||||
|
public class registerButtonSkin extends ButtonSkin {
|
||||||
|
public registerButtonSkin(Button button) {
|
||||||
|
super(button);
|
||||||
|
|
||||||
|
ScaleTransition scaleUp = new ScaleTransition(Duration.millis(140));
|
||||||
|
scaleUp.setToX(1.2);
|
||||||
|
scaleUp.setToY(1.2);
|
||||||
|
scaleUp.setNode(button);
|
||||||
|
button.setOnMouseEntered(e -> scaleUp.playFromStart());
|
||||||
|
|
||||||
|
ScaleTransition scaleMiddleDown = new ScaleTransition(Duration.millis(50));
|
||||||
|
|
||||||
|
scaleMiddleDown.setToX(1.1);
|
||||||
|
scaleMiddleDown.setToY(1.1);
|
||||||
|
scaleMiddleDown.setNode(button);
|
||||||
|
button.setOnMousePressed(e -> scaleMiddleDown.playFromStart());
|
||||||
|
|
||||||
|
ScaleTransition scaleMiddleUp = new ScaleTransition(Duration.millis(50));
|
||||||
|
|
||||||
|
scaleMiddleUp.setToX(1.2);
|
||||||
|
scaleMiddleUp.setToY(1.2);
|
||||||
|
scaleMiddleUp.setNode(button);
|
||||||
|
button.setOnMouseReleased(e -> scaleMiddleUp.playFromStart());
|
||||||
|
|
||||||
|
ScaleTransition scaleDown = new ScaleTransition(Duration.millis(200));
|
||||||
|
scaleDown.setToX(1.0);
|
||||||
|
scaleDown.setToY(1.0);
|
||||||
|
scaleDown.setNode(button);
|
||||||
|
button.setOnMouseExited(e -> scaleDown.playFromStart());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
package greenify.client.controller;
|
package greenify.client.controller;
|
||||||
|
|
||||||
|
import com.sun.javafx.scene.control.skin.ButtonSkin;
|
||||||
import greenify.client.Application;
|
import greenify.client.Application;
|
||||||
import greenify.client.rest.UserService;
|
import greenify.client.rest.UserService;
|
||||||
|
import javafx.animation.ScaleTransition;
|
||||||
import javafx.event.ActionEvent;
|
import javafx.event.ActionEvent;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.scene.Parent;
|
import javafx.scene.Parent;
|
||||||
@@ -12,8 +14,10 @@ import javafx.scene.control.PasswordField;
|
|||||||
import javafx.scene.control.TextField;
|
import javafx.scene.control.TextField;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import javafx.stage.Window;
|
import javafx.stage.Window;
|
||||||
|
import javafx.util.Duration;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.client.HttpClientErrorException;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -35,6 +39,10 @@ public class UserController {
|
|||||||
@FXML
|
@FXML
|
||||||
private Button signUpButton;
|
private Button signUpButton;
|
||||||
|
|
||||||
|
public void initialize() {
|
||||||
|
loginButton.setSkin(new LoginButtonSkin(loginButton));
|
||||||
|
signUpButton.setSkin(new LoginButtonSkin(signUpButton));
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Handles when the user clicks on the login button.
|
* Handles when the user clicks on the login button.
|
||||||
* it checks if the username and password fields are filled
|
* it checks if the username and password fields are filled
|
||||||
@@ -67,7 +75,7 @@ public class UserController {
|
|||||||
//log the user in with the userService method
|
//log the user in with the userService method
|
||||||
try {
|
try {
|
||||||
userService.loginUser(usernameField.getText(), passwordField.getText());
|
userService.loginUser(usernameField.getText(), passwordField.getText());
|
||||||
} catch (RuntimeException ex) {
|
} catch (HttpClientErrorException ex) {
|
||||||
AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Log-in Error!",
|
AlertHelper.showAlert(Alert.AlertType.ERROR, owner, "Log-in Error!",
|
||||||
"Your username or password is incorrect!");
|
"Your username or password is incorrect!");
|
||||||
return;
|
return;
|
||||||
@@ -135,11 +143,47 @@ public class UserController {
|
|||||||
Parent registerWindow = Application.load(this.getClass().getClassLoader()
|
Parent registerWindow = Application.load(this.getClass().getClassLoader()
|
||||||
.getResource("fxml/RegisterWindow.fxml"));
|
.getResource("fxml/RegisterWindow.fxml"));
|
||||||
Scene registerScene = new Scene(registerWindow);
|
Scene registerScene = new Scene(registerWindow);
|
||||||
|
registerScene.getStylesheets().add(this.getClass().getClassLoader()
|
||||||
|
.getResource("stylesheets/registerWindowStyle.css").toExternalForm());
|
||||||
Stage registerStage = new Stage();
|
Stage registerStage = new Stage();
|
||||||
registerStage.setScene(registerScene);
|
registerStage.setScene(registerScene);
|
||||||
registerStage.setTitle("Enter register credentials");
|
registerStage.setTitle("Enter register credentials");
|
||||||
registerStage.show();
|
registerStage.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("Duplicates")
|
||||||
|
public class LoginButtonSkin extends ButtonSkin {
|
||||||
|
public LoginButtonSkin(Button button) {
|
||||||
|
super(button);
|
||||||
|
ScaleTransition scaleUp = new ScaleTransition(Duration.millis(140));
|
||||||
|
scaleUp.setToX(1.1);
|
||||||
|
scaleUp.setToY(1.1);
|
||||||
|
scaleUp.setNode(button);
|
||||||
|
button.setOnMouseEntered(e -> scaleUp.playFromStart());
|
||||||
|
|
||||||
|
ScaleTransition scaleMiddleDown = new ScaleTransition(Duration.millis(50));
|
||||||
|
scaleMiddleDown.setFromX(1.1);
|
||||||
|
scaleMiddleDown.setFromY(1.1);
|
||||||
|
scaleMiddleDown.setToX(1.05);
|
||||||
|
scaleMiddleDown.setToY(1.05);
|
||||||
|
scaleMiddleDown.setNode(button);
|
||||||
|
button.setOnMousePressed(e -> scaleMiddleDown.playFromStart());
|
||||||
|
|
||||||
|
ScaleTransition scaleMiddleUp = new ScaleTransition(Duration.millis(50));
|
||||||
|
scaleMiddleUp.setFromX(1.05);
|
||||||
|
scaleMiddleUp.setFromY(1.05);
|
||||||
|
scaleMiddleUp.setToX(1.1);
|
||||||
|
scaleMiddleUp.setToY(1.1);
|
||||||
|
scaleMiddleUp.setNode(button);
|
||||||
|
button.setOnMouseReleased(e -> scaleMiddleUp.playFromStart());
|
||||||
|
|
||||||
|
ScaleTransition scaleDown = new ScaleTransition(Duration.millis(200));
|
||||||
|
scaleDown.setToX(1.0);
|
||||||
|
scaleDown.setToY(1.0);
|
||||||
|
scaleDown.setNode(button);
|
||||||
|
button.setOnMouseExited(e -> scaleDown.playFromStart());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -301,6 +301,23 @@ public class UserService {
|
|||||||
.encode().toUri(), Map.class);
|
.encode().toUri(), Map.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the results of a user.
|
||||||
|
* @param name name of the user
|
||||||
|
* @return Map with all results
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("Duplicates")
|
||||||
|
public Map<String, String> getResults(String name) {
|
||||||
|
HttpHeaders headers = new HttpHeaders();
|
||||||
|
headers.set("Accept", MediaType.APPLICATION_JSON_VALUE);
|
||||||
|
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://localhost:8080/getResults")
|
||||||
|
.queryParam("name", name);
|
||||||
|
HttpEntity<?> entity = new HttpEntity<>(headers);
|
||||||
|
System.out.println(builder.build().encode().toUri());
|
||||||
|
return this.restTemplate.getForObject(builder.build()
|
||||||
|
.encode().toUri(), Map.class);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the list of all users.
|
* Gets the list of all users.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -23,12 +23,7 @@
|
|||||||
<Button fx:id="loginButton" layoutX="419.0" layoutY="274.0" mnemonicParsing="false" onAction="#handleLoginButtonAction" prefHeight="26.0" prefWidth="96.0" text="Login" textAlignment="CENTER" />
|
<Button fx:id="loginButton" layoutX="419.0" layoutY="274.0" mnemonicParsing="false" onAction="#handleLoginButtonAction" prefHeight="26.0" prefWidth="96.0" text="Login" textAlignment="CENTER" />
|
||||||
<Button fx:id="signUpButton" layoutX="42.0" layoutY="52.0" mnemonicParsing="false" onAction="#handleRegisterButtonAction" prefHeight="10.0" prefWidth="96.0" text="Sign up!" />
|
<Button fx:id="signUpButton" layoutX="42.0" layoutY="52.0" mnemonicParsing="false" onAction="#handleRegisterButtonAction" prefHeight="10.0" prefWidth="96.0" text="Sign up!" />
|
||||||
<PasswordField fx:id="passwordField" layoutX="318.0" layoutY="210.0" prefHeight="42.0" prefWidth="303.0" promptText="Password" />
|
<PasswordField fx:id="passwordField" layoutX="318.0" layoutY="210.0" prefHeight="42.0" prefWidth="303.0" promptText="Password" />
|
||||||
<Hyperlink alignment="CENTER" layoutX="384.0" layoutY="301.0" prefHeight="42.0" prefWidth="173.0" text="Forgot Password?" textAlignment="CENTER" textFill="#3db25a" textOverrun="LEADING_WORD_ELLIPSIS">
|
<Text fill="#23773d" layoutX="20.0" layoutY="40.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Not a member?" textAlignment="CENTER" wrappingWidth="146.13673400878906">
|
||||||
<font>
|
|
||||||
<Font name="Corbel Bold" size="18.0" />
|
|
||||||
</font>
|
|
||||||
</Hyperlink>
|
|
||||||
<Text fill="#23773d" layoutX="20.0" layoutY="40.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Not Member?" textAlignment="CENTER" wrappingWidth="146.13673400878906">
|
|
||||||
<font>
|
<font>
|
||||||
<Font name="Californian FB" size="20.0" />
|
<Font name="Californian FB" size="20.0" />
|
||||||
</font>
|
</font>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<?import java.lang.*?>
|
||||||
<?import javafx.scene.control.*?>
|
<?import javafx.scene.control.*?>
|
||||||
<?import javafx.scene.image.*?>
|
<?import javafx.scene.image.*?>
|
||||||
<?import javafx.scene.layout.*?>
|
<?import javafx.scene.layout.*?>
|
||||||
@@ -24,7 +25,7 @@
|
|||||||
<Font size="13.0" />
|
<Font size="13.0" />
|
||||||
</font>
|
</font>
|
||||||
</TextField>
|
</TextField>
|
||||||
<Button fx:id="signUpButton" layoutX="115.0" layoutY="229.0" mnemonicParsing="false" onAction="#handleSignUpButton" style="-fx-background-color: #005e07;" text="Sign up!" textFill="#c4eec9">
|
<Button fx:id="signUpButton" layoutX="115.0" layoutY="229.0" mnemonicParsing="false" onAction="#handleSignUpButton" text="Sign up!" textFill="#c4eec9">
|
||||||
<font>
|
<font>
|
||||||
<Font name="Corbel Bold" size="14.0" />
|
<Font name="Corbel Bold" size="14.0" />
|
||||||
</font>
|
</font>
|
||||||
|
|||||||
@@ -63,7 +63,6 @@
|
|||||||
<Line endX="104.0" layoutX="105.0" layoutY="178.0" scaleY="0.7" startX="-100.0" stroke="#e3ffe8" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" />
|
<Line endX="104.0" layoutX="105.0" layoutY="178.0" scaleY="0.7" startX="-100.0" stroke="#e3ffe8" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" />
|
||||||
<Line endX="104.0" layoutX="109.0" layoutY="223.0" startX="-100.0" stroke="#e3ffe8" strokeWidth="0.7" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" />
|
<Line endX="104.0" layoutX="109.0" layoutY="223.0" startX="-100.0" stroke="#e3ffe8" strokeWidth="0.7" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" />
|
||||||
<Line fx:id="pathLine" endX="100.0" endY="28.0" fill="#1b9736" layoutX="8.0" layoutY="323.0" startX="-100.0" startY="28.0" stroke="#5a635c" />
|
<Line fx:id="pathLine" endX="100.0" endY="28.0" fill="#1b9736" layoutX="8.0" layoutY="323.0" startX="-100.0" startY="28.0" stroke="#5a635c" />
|
||||||
<Line endX="104.0" layoutX="105.0" layoutY="271.0" startX="-100.0" stroke="#e3ffe8" strokeWidth="0.7" />
|
|
||||||
<Line endX="104.0" layoutX="106.0" layoutY="270.0" startX="-100.0" stroke="#e3ffe8" strokeWidth="0.7" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" />
|
<Line endX="104.0" layoutX="106.0" layoutY="270.0" startX="-100.0" stroke="#e3ffe8" strokeWidth="0.7" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" />
|
||||||
<Label fx:id="hintText" alignment="TOP_LEFT" layoutX="14.0" layoutY="420.0" prefHeight="218.0" prefWidth="187.0" text="Hints" textFill="#c2cdc4">
|
<Label fx:id="hintText" alignment="TOP_LEFT" layoutX="14.0" layoutY="420.0" prefHeight="218.0" prefWidth="187.0" text="Hints" textFill="#c2cdc4">
|
||||||
<font>
|
<font>
|
||||||
@@ -84,6 +83,7 @@
|
|||||||
</ImageView>
|
</ImageView>
|
||||||
</graphic>
|
</graphic>
|
||||||
</Button>
|
</Button>
|
||||||
|
<Line endX="104.0" layoutX="108.0" layoutY="88.0" startX="-100.0" stroke="#e3ffe8" strokeWidth="0.7" />
|
||||||
</children></AnchorPane>
|
</children></AnchorPane>
|
||||||
<AnchorPane fx:id="activitiesPane" layoutX="214.0" prefHeight="703.0" prefWidth="820.0" visible="false" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="214.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
<AnchorPane fx:id="activitiesPane" layoutX="214.0" prefHeight="703.0" prefWidth="820.0" visible="false" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="214.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
<children>
|
<children>
|
||||||
@@ -241,71 +241,83 @@
|
|||||||
<Font name="System Bold Italic" size="18.0" />
|
<Font name="System Bold Italic" size="18.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Pane layoutX="545.0" layoutY="130.0" prefHeight="342.0" prefWidth="255.0" style="-fx-background-color: #f4fff4;">
|
<Pane layoutX="545.0" layoutY="130.0" prefHeight="255.0" prefWidth="255.0" style="-fx-background-color: #f4fff4;">
|
||||||
<children>
|
<children>
|
||||||
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="26.0" prefHeight="46.0" prefWidth="115.0" text="Meat fish eggs">
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="14.0" prefHeight="46.0" prefWidth="115.0" text="Meat fish eggs">
|
||||||
<font>
|
<font>
|
||||||
<Font size="14.0" />
|
<Font size="14.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="90.0" prefHeight="46.0" prefWidth="115.0" text="Grains/baked foods" textAlignment="CENTER">
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="60.0" prefHeight="46.0" prefWidth="115.0" text="Grains/baked foods" textAlignment="CENTER">
|
||||||
<font>
|
<font>
|
||||||
<Font size="14.0" />
|
<Font size="14.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="154.0" prefHeight="46.0" prefWidth="115.0" text="Dairy">
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="106.0" prefHeight="46.0" prefWidth="115.0" text="Dairy">
|
||||||
<font>
|
<font>
|
||||||
<Font size="14.0" />
|
<Font size="14.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="218.0" prefHeight="46.0" prefWidth="115.0" text="Fruits vegetables">
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="152.0" prefHeight="46.0" prefWidth="115.0" text="Fruits vegetables">
|
||||||
<font>
|
<font>
|
||||||
<Font size="14.0" />
|
<Font size="14.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="282.0" prefHeight="46.0" prefWidth="115.0" text="Snacks drinks">
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="198.0" prefHeight="46.0" prefWidth="115.0" text="Snacks drinks">
|
||||||
<font>
|
<font>
|
||||||
<Font size="14.0" />
|
<Font size="14.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Label fx:id="meat" layoutX="171.0" layoutY="41.0" styleClass="activityField" text="Label" />
|
<Label fx:id="meat" layoutX="171.0" layoutY="29.0" styleClass="activityField" text="Label" />
|
||||||
<Label fx:id="grains" layoutX="171.0" layoutY="105.0" styleClass="activityField" text="Label" />
|
<Label fx:id="grains" layoutX="171.0" layoutY="75.0" styleClass="activityField" text="Label" />
|
||||||
<Label fx:id="dairy" layoutX="171.0" layoutY="169.0" styleClass="activityField" text="Label" />
|
<Label fx:id="dairy" layoutX="171.0" layoutY="121.0" styleClass="activityField" text="Label" />
|
||||||
<Label fx:id="fruits" layoutX="171.0" layoutY="233.0" styleClass="activityField" text="Label" />
|
<Label fx:id="fruits" layoutX="171.0" layoutY="167.0" styleClass="activityField" text="Label" />
|
||||||
<Label fx:id="snacks" layoutX="171.0" layoutY="297.0" styleClass="activityField" text="Label" />
|
<Label fx:id="snacks" layoutX="171.0" layoutY="213.0" styleClass="activityField" text="Label" />
|
||||||
</children>
|
</children>
|
||||||
</Pane>
|
</Pane>
|
||||||
<Label alignment="CENTER" layoutX="545.0" layoutY="488.0" prefHeight="32.0" prefWidth="255.0" text="Extras!" textAlignment="CENTER" textFill="#107222">
|
<Label alignment="CENTER" layoutX="545.0" layoutY="385.0" prefHeight="32.0" prefWidth="255.0" text="Extras!" textAlignment="CENTER" textFill="#107222">
|
||||||
<font>
|
<font>
|
||||||
<Font name="System Bold Italic" size="18.0" />
|
<Font name="System Bold Italic" size="18.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Pane layoutX="545.0" layoutY="520.0" prefHeight="129.0" prefWidth="255.0" style="-fx-background-color: #f4fff4;">
|
<Pane layoutX="545.0" layoutY="412.0" prefHeight="238.0" prefWidth="255.0" style="-fx-background-color: #f4fff4;">
|
||||||
<children>
|
<children>
|
||||||
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="7.0" prefHeight="27.0" prefWidth="183.0" text="Buying local produce">
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="12.0" layoutY="56.0" prefHeight="27.0" prefWidth="183.0" text="Buying local produce">
|
||||||
<font>
|
<font>
|
||||||
<Font size="14.0" />
|
<Font size="14.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Label fx:id="localProduce" layoutX="195.0" layoutY="7.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
<Label fx:id="localProduce" layoutX="189.0" layoutY="56.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
||||||
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="18.0" layoutY="39.0" prefHeight="27.0" prefWidth="183.0" text="Using bike">
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="12.0" layoutY="92.0" prefHeight="27.0" prefWidth="183.0" text="Using bike">
|
||||||
<font>
|
<font>
|
||||||
<Font size="14.0" />
|
<Font size="14.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Label fx:id="bike" layoutX="195.0" layoutY="39.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
<Label fx:id="bike" layoutX="189.0" layoutY="92.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
||||||
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="20.0" layoutY="71.0" prefHeight="27.0" prefWidth="183.0" text="Lowering the temperature">
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="13.0" layoutY="164.0" prefHeight="27.0" prefWidth="183.0" text="Lowering the temperature">
|
||||||
<font>
|
<font>
|
||||||
<Font size="14.0" />
|
<Font size="14.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Label fx:id="loweringTemp" layoutX="195.0" layoutY="71.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
<Label fx:id="loweringTemp" layoutX="188.0" layoutY="164.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
||||||
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="20.0" layoutY="103.0" prefHeight="27.0" prefWidth="183.0" text="Installing solar panels">
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="13.0" layoutY="200.0" prefHeight="27.0" prefWidth="183.0" text="Installing solar panels">
|
||||||
<font>
|
<font>
|
||||||
<Font size="14.0" />
|
<Font size="14.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Label fx:id="solarPanels" layoutX="195.0" layoutY="103.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
<Label fx:id="solarPanels" layoutX="188.0" layoutY="200.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
||||||
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="13.0" layoutY="128.0" prefHeight="27.0" prefWidth="183.0" text="Using public transport">
|
||||||
|
<font>
|
||||||
|
<Font size="14.0" />
|
||||||
|
</font>
|
||||||
|
</Label>
|
||||||
|
<Label fx:id="publicTrans" layoutX="188.0" layoutY="128.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
||||||
|
<Label alignment="CENTER" contentDisplay="CENTER" layoutX="11.0" layoutY="20.0" prefHeight="27.0" prefWidth="183.0" text="Eating vegetarian meal">
|
||||||
|
<font>
|
||||||
|
<Font size="14.0" />
|
||||||
|
</font>
|
||||||
|
</Label>
|
||||||
|
<Label fx:id="veganMeal" layoutX="188.0" layoutY="20.0" mnemonicParsing="false" prefHeight="27.0" prefWidth="55.0" />
|
||||||
</children>
|
</children>
|
||||||
</Pane>
|
</Pane>
|
||||||
<Button fx:id="addExtraActivityButton2" contentDisplay="RIGHT" layoutX="545.0" layoutY="14.0" mnemonicParsing="false" onAction="#openExtraActivities" style="-fx-background-color: transparent;" text="Add extra activity!" textFill="#147219">
|
<Button fx:id="addExtraActivityButton2" contentDisplay="RIGHT" layoutX="545.0" layoutY="14.0" mnemonicParsing="false" onAction="#openExtraActivities" style="-fx-background-color: transparent;" text="Add extra activity!" textFill="#147219">
|
||||||
@@ -449,14 +461,14 @@
|
|||||||
</Button>
|
</Button>
|
||||||
<TableView fx:id="globalLeaderboard" layoutX="56.0" layoutY="220.0" prefHeight="333.0" prefWidth="200.0">
|
<TableView fx:id="globalLeaderboard" layoutX="56.0" layoutY="220.0" prefHeight="333.0" prefWidth="200.0">
|
||||||
<columns>
|
<columns>
|
||||||
<TableColumn fx:id="globalUser" prefWidth="75.0" text="User" />
|
<TableColumn fx:id="globalUser" prefWidth="121.0" text="User" />
|
||||||
<TableColumn fx:id="globalScore" prefWidth="124.0" text="Score" />
|
<TableColumn fx:id="globalScore" prefWidth="78.0" text="Score" />
|
||||||
</columns>
|
</columns>
|
||||||
</TableView>
|
</TableView>
|
||||||
<TableView fx:id="developmentLeaderboard" layoutX="302.0" layoutY="220.0" prefHeight="333.0" prefWidth="200.0">
|
<TableView fx:id="developmentLeaderboard" layoutX="302.0" layoutY="220.0" prefHeight="333.0" prefWidth="200.0">
|
||||||
<columns>
|
<columns>
|
||||||
<TableColumn fx:id="developmentUser" prefWidth="75.0" text="User" />
|
<TableColumn fx:id="developmentUser" prefWidth="126.0" text="User" />
|
||||||
<TableColumn fx:id="developmentScore" prefWidth="124.0" text="Score" />
|
<TableColumn fx:id="developmentScore" prefWidth="73.0" text="Score" />
|
||||||
</columns>
|
</columns>
|
||||||
</TableView>
|
</TableView>
|
||||||
<Label layoutX="69.0" layoutY="177.0" prefHeight="46.0" prefWidth="187.0" text="Global Leaderboard" textAlignment="CENTER" textFill="#5f1616">
|
<Label layoutX="69.0" layoutY="177.0" prefHeight="46.0" prefWidth="187.0" text="Global Leaderboard" textAlignment="CENTER" textFill="#5f1616">
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<?import java.lang.*?>
|
||||||
<?import javafx.scene.control.*?>
|
<?import javafx.scene.control.*?>
|
||||||
<?import javafx.scene.image.*?>
|
<?import javafx.scene.image.*?>
|
||||||
<?import javafx.scene.layout.*?>
|
<?import javafx.scene.layout.*?>
|
||||||
@@ -8,63 +9,6 @@
|
|||||||
|
|
||||||
<AnchorPane prefHeight="611.0" prefWidth="820.0" stylesheets="@../stylesheets/extraActivitiesStyle.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="greenify.client.controller.ExtraActivityController">
|
<AnchorPane prefHeight="611.0" prefWidth="820.0" stylesheets="@../stylesheets/extraActivitiesStyle.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="greenify.client.controller.ExtraActivityController">
|
||||||
<children>
|
<children>
|
||||||
<AnchorPane prefHeight="611.0" prefWidth="107.0">
|
|
||||||
<children>
|
|
||||||
<Button fx:id="displayVeganMealButton" contentDisplay="TOP" layoutX="14.0" layoutY="62.0" mnemonicParsing="false" onAction="#displayVeganMeal" prefHeight="70.0" prefWidth="82.0" styleClass="navButton">
|
|
||||||
<graphic>
|
|
||||||
<ImageView fitHeight="45.0" fitWidth="45.0" pickOnBounds="true" preserveRatio="true" styleClass="navButton">
|
|
||||||
<image>
|
|
||||||
<Image url="@../icons/icons8-vegan-food-100.png" />
|
|
||||||
</image>
|
|
||||||
</ImageView>
|
|
||||||
</graphic>
|
|
||||||
</Button>
|
|
||||||
<Button fx:id="displayLocalProduceButton" contentDisplay="TOP" layoutX="14.0" layoutY="143.0" mnemonicParsing="false" onAction="#displayLocalProduce" prefHeight="70.0" prefWidth="82.0" styleClass="navButton">
|
|
||||||
<graphic>
|
|
||||||
<ImageView fitHeight="45.0" fitWidth="45.0" pickOnBounds="true" preserveRatio="true" styleClass="navButton">
|
|
||||||
<image>
|
|
||||||
<Image url="@../icons/localProduce.png" />
|
|
||||||
</image>
|
|
||||||
</ImageView>
|
|
||||||
</graphic>
|
|
||||||
</Button>
|
|
||||||
<Button fx:id="displayBikeButton" contentDisplay="TOP" layoutX="14.0" layoutY="224.0" mnemonicParsing="false" onAction="#displayBike" prefHeight="70.0" prefWidth="82.0" styleClass="navButton">
|
|
||||||
<graphic>
|
|
||||||
<ImageView fitHeight="45.0" fitWidth="48.0" pickOnBounds="true" preserveRatio="true">
|
|
||||||
<image>
|
|
||||||
<Image url="@../icons/icons8-bicycle-filled-100.png" />
|
|
||||||
</image>
|
|
||||||
</ImageView>
|
|
||||||
</graphic></Button>
|
|
||||||
<Button fx:id="displaySolarPanelButton" contentDisplay="TOP" layoutX="14.0" layoutY="467.0" mnemonicParsing="false" onAction="#displaySolarPanel" prefHeight="70.0" prefWidth="82.0" styleClass="navButton">
|
|
||||||
<graphic>
|
|
||||||
<ImageView fitHeight="45.0" fitWidth="48.0" pickOnBounds="true" preserveRatio="true">
|
|
||||||
<image>
|
|
||||||
<Image url="@../icons/icons8-solar-panel-filled-100.png" />
|
|
||||||
</image>
|
|
||||||
</ImageView>
|
|
||||||
</graphic>
|
|
||||||
</Button>
|
|
||||||
<Button fx:id="displayTemperatureButton" contentDisplay="TOP" layoutX="14.0" layoutY="386.0" mnemonicParsing="false" onAction="#displayTemperature" prefHeight="70.0" prefWidth="82.0" styleClass="navButton">
|
|
||||||
<graphic>
|
|
||||||
<ImageView fitHeight="45.0" fitWidth="48.0" pickOnBounds="true" preserveRatio="true">
|
|
||||||
<image>
|
|
||||||
<Image url="@../icons/icons8-temperature-inside-64.png" />
|
|
||||||
</image>
|
|
||||||
</ImageView>
|
|
||||||
</graphic>
|
|
||||||
</Button>
|
|
||||||
<Button fx:id="displayPublicTransportButton" contentDisplay="TOP" layoutX="14.0" layoutY="305.0" mnemonicParsing="false" onAction="#displayPublicTransport" prefHeight="70.0" prefWidth="82.0" styleClass="navButton">
|
|
||||||
<graphic>
|
|
||||||
<ImageView fitHeight="45.0" fitWidth="45.0" pickOnBounds="true" preserveRatio="true" styleClass="navButton">
|
|
||||||
<image>
|
|
||||||
<Image url="@../icons/publicTransport.png" />
|
|
||||||
</image>
|
|
||||||
</ImageView>
|
|
||||||
</graphic>
|
|
||||||
</Button>
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane fx:id="veganMealPane" layoutX="107.0" prefHeight="611.0" prefWidth="713.0">
|
<AnchorPane fx:id="veganMealPane" layoutX="107.0" prefHeight="611.0" prefWidth="713.0">
|
||||||
<children>
|
<children>
|
||||||
<Line fx:id="line1" endX="79.0" layoutX="465.0" layoutY="7.0" stroke="#545b54" />
|
<Line fx:id="line1" endX="79.0" layoutX="465.0" layoutY="7.0" stroke="#545b54" />
|
||||||
@@ -257,5 +201,62 @@
|
|||||||
</HBox>
|
</HBox>
|
||||||
</children>
|
</children>
|
||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="611.0" prefWidth="107.0">
|
||||||
|
<children>
|
||||||
|
<Button fx:id="displayVeganMealButton" contentDisplay="TOP" layoutX="14.0" layoutY="62.0" mnemonicParsing="false" onAction="#displayVeganMeal" prefHeight="70.0" prefWidth="82.0" styleClass="navButton">
|
||||||
|
<graphic>
|
||||||
|
<ImageView fitHeight="45.0" fitWidth="45.0" pickOnBounds="true" preserveRatio="true" styleClass="navButton">
|
||||||
|
<image>
|
||||||
|
<Image url="@../icons/icons8-vegan-food-100.png" />
|
||||||
|
</image>
|
||||||
|
</ImageView>
|
||||||
|
</graphic>
|
||||||
|
</Button>
|
||||||
|
<Button fx:id="displayLocalProduceButton" contentDisplay="TOP" layoutX="14.0" layoutY="143.0" mnemonicParsing="false" onAction="#displayLocalProduce" prefHeight="70.0" prefWidth="82.0" styleClass="navButton">
|
||||||
|
<graphic>
|
||||||
|
<ImageView fitHeight="45.0" fitWidth="45.0" pickOnBounds="true" preserveRatio="true" styleClass="navButton">
|
||||||
|
<image>
|
||||||
|
<Image url="@../icons/localProduce.png" />
|
||||||
|
</image>
|
||||||
|
</ImageView>
|
||||||
|
</graphic>
|
||||||
|
</Button>
|
||||||
|
<Button fx:id="displayBikeButton" contentDisplay="TOP" layoutX="14.0" layoutY="224.0" mnemonicParsing="false" onAction="#displayBike" prefHeight="70.0" prefWidth="82.0" styleClass="navButton">
|
||||||
|
<graphic>
|
||||||
|
<ImageView fitHeight="45.0" fitWidth="48.0" pickOnBounds="true" preserveRatio="true">
|
||||||
|
<image>
|
||||||
|
<Image url="@../icons/icons8-bicycle-filled-100.png" />
|
||||||
|
</image>
|
||||||
|
</ImageView>
|
||||||
|
</graphic></Button>
|
||||||
|
<Button fx:id="displaySolarPanelButton" contentDisplay="TOP" layoutX="14.0" layoutY="467.0" mnemonicParsing="false" onAction="#displaySolarPanel" prefHeight="70.0" prefWidth="82.0" styleClass="navButton">
|
||||||
|
<graphic>
|
||||||
|
<ImageView fitHeight="45.0" fitWidth="48.0" pickOnBounds="true" preserveRatio="true">
|
||||||
|
<image>
|
||||||
|
<Image url="@../icons/icons8-solar-panel-filled-100.png" />
|
||||||
|
</image>
|
||||||
|
</ImageView>
|
||||||
|
</graphic>
|
||||||
|
</Button>
|
||||||
|
<Button fx:id="displayTemperatureButton" contentDisplay="TOP" layoutX="14.0" layoutY="386.0" mnemonicParsing="false" onAction="#displayTemperature" prefHeight="70.0" prefWidth="82.0" styleClass="navButton">
|
||||||
|
<graphic>
|
||||||
|
<ImageView fitHeight="45.0" fitWidth="48.0" pickOnBounds="true" preserveRatio="true">
|
||||||
|
<image>
|
||||||
|
<Image url="@../icons/icons8-temperature-inside-64.png" />
|
||||||
|
</image>
|
||||||
|
</ImageView>
|
||||||
|
</graphic>
|
||||||
|
</Button>
|
||||||
|
<Button fx:id="displayPublicTransportButton" contentDisplay="TOP" layoutX="14.0" layoutY="305.0" mnemonicParsing="false" onAction="#displayPublicTransport" prefHeight="70.0" prefWidth="82.0" styleClass="navButton">
|
||||||
|
<graphic>
|
||||||
|
<ImageView fitHeight="45.0" fitWidth="45.0" pickOnBounds="true" preserveRatio="true" styleClass="navButton">
|
||||||
|
<image>
|
||||||
|
<Image url="@../icons/publicTransport.png" />
|
||||||
|
</image>
|
||||||
|
</ImageView>
|
||||||
|
</graphic>
|
||||||
|
</Button>
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
</children>
|
</children>
|
||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 26 KiB |
@@ -2,4 +2,12 @@
|
|||||||
-fx-background-color: #005e07;
|
-fx-background-color: #005e07;
|
||||||
-fx-text-fill: #c4eec9;
|
-fx-text-fill: #c4eec9;
|
||||||
-fx-font-weight: bold;
|
-fx-font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button:hover {
|
||||||
|
-fx-background-color: #027009;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button:pressed {
|
||||||
|
-fx-background-color: #1ba023;
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
import greenify.client.Friend;
|
import greenify.client.Friend;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
|
||||||
|
|
||||||
public class FriendTest {
|
public class FriendTest {
|
||||||
@Test
|
@Test
|
||||||
public void setAndGetTest() {
|
public void setAndGetTest() {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import static junit.framework.TestCase.assertTrue;
|
import static junit.framework.TestCase.assertTrue;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
|
||||||
import greenify.client.Hints;
|
import greenify.client.Hints;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -15,7 +16,7 @@ public class HintsTest {
|
|||||||
public void hintsContainsTest() {
|
public void hintsContainsTest() {
|
||||||
Hints test = new Hints();
|
Hints test = new Hints();
|
||||||
assertTrue(test.hints.contains("27,000 trees are cut down "
|
assertTrue(test.hints.contains("27,000 trees are cut down "
|
||||||
+ "each day so we can have toilet paper."));
|
+ "every day so we can have toilet paper."));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -24,6 +25,20 @@ public class HintsTest {
|
|||||||
String random = test.randomHint();
|
String random = test.randomHint();
|
||||||
assertTrue(test.hints.contains(random));
|
assertTrue(test.hints.contains(random));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void hintsContainsTestTwo() {
|
||||||
|
Hints test = new Hints();
|
||||||
|
assertTrue(test.hints.contains("Plastic bad, very bad."));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void hintsNotNullTest() {
|
||||||
|
Hints test = new Hints();
|
||||||
|
assertNotNull(test.hints);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
import greenify.client.rest.UserService;
|
import greenify.client.rest.UserService;
|
||||||
import greenify.common.UserDto;
|
import greenify.common.UserDto;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -14,9 +17,6 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
|
|
||||||
@RunWith(MockitoJUnitRunner.class)
|
@RunWith(MockitoJUnitRunner.class)
|
||||||
public class UserServiceTest {
|
public class UserServiceTest {
|
||||||
|
|
||||||
@@ -163,6 +163,12 @@ public class UserServiceTest {
|
|||||||
userService.getAchievements("mika");
|
userService.getAchievements("mika");
|
||||||
Mockito.verify(userService).getAchievements("mika");
|
Mockito.verify(userService).getAchievements("mika");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getResultsTest() throws Exception {
|
||||||
|
userService.getResults("mika");
|
||||||
|
Mockito.verify(userService).getResults("mika");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -185,5 +185,15 @@ public class UserController {
|
|||||||
public Map<String, Boolean> getAchievements(@RequestParam(value = "name") String name) {
|
public Map<String, Boolean> getAchievements(@RequestParam(value = "name") String name) {
|
||||||
return userService.getAchievements(name);
|
return userService.getAchievements(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method gets the result for schema.
|
||||||
|
* @param name name of the user
|
||||||
|
* @return map of all results of the user
|
||||||
|
*/
|
||||||
|
@RequestMapping("/getResults")
|
||||||
|
public Map<String, String> getResults(@RequestParam(value = "name") String name) {
|
||||||
|
return userService.getResults(name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
import org.springframework.web.util.UriComponentsBuilder;
|
import org.springframework.web.util.UriComponentsBuilder;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@@ -108,5 +109,43 @@ public class CalculatorService {
|
|||||||
inputs.put("input_footprint_shopping_goods_total", netShopping + "");
|
inputs.put("input_footprint_shopping_goods_total", netShopping + "");
|
||||||
user.setFootPrintInputs(inputs);
|
user.setFootPrintInputs(inputs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getResults(Map<String, String> map) {
|
||||||
|
HttpHeaders headers = new HttpHeaders();
|
||||||
|
headers.set("accept", MediaType.APPLICATION_JSON_VALUE);
|
||||||
|
headers.set("app_id", "a98272e3");
|
||||||
|
headers.set("app_key", "b9167c4918cb2b3143614b595065d83b");
|
||||||
|
HttpEntity<String> entity = new HttpEntity<>("parameters", headers);
|
||||||
|
UriComponentsBuilder builder =
|
||||||
|
UriComponentsBuilder.fromHttpUrl("https://apis.berkeley.edu/coolclimate/footprint");
|
||||||
|
for (String inputId : map.keySet()) {
|
||||||
|
builder = builder.queryParam(inputId, map.get(inputId));
|
||||||
|
}
|
||||||
|
ResponseEntity<String> response = restTemplate
|
||||||
|
.exchange(builder.build().encode().toUri(), HttpMethod.GET,
|
||||||
|
entity, String.class);
|
||||||
|
String transport = response.getBody().substring(Objects.requireNonNull(response.getBody())
|
||||||
|
.indexOf("<result_transport_total>")
|
||||||
|
+ 24, response.getBody().indexOf("</result_transport_total>"));
|
||||||
|
String housing = response.getBody().substring(Objects.requireNonNull(response.getBody())
|
||||||
|
.indexOf("<result_housing_total>")
|
||||||
|
+ 22, response.getBody().indexOf("</result_housing_total>"));
|
||||||
|
String food = response.getBody().substring(Objects.requireNonNull(response.getBody())
|
||||||
|
.indexOf("<result_food_total>")
|
||||||
|
+ 19, response.getBody().indexOf("</result_food_total>"));
|
||||||
|
String goods = response.getBody().substring(Objects.requireNonNull(response.getBody())
|
||||||
|
.indexOf("<result_goods_total>")
|
||||||
|
+ 20, response.getBody().indexOf("</result_goods_total>"));
|
||||||
|
String services = response.getBody().substring(Objects.requireNonNull(response.getBody())
|
||||||
|
.indexOf("<result_services_total>")
|
||||||
|
+ 23, response.getBody().indexOf("</result_services_total>"));
|
||||||
|
Map<String, String> resultMap = new HashMap<>();
|
||||||
|
resultMap.put("transport", transport);
|
||||||
|
resultMap.put("housing", housing);
|
||||||
|
resultMap.put("food", food);
|
||||||
|
resultMap.put("goods", goods);
|
||||||
|
resultMap.put("services", services);
|
||||||
|
return resultMap;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -280,6 +280,17 @@ public class UserService {
|
|||||||
return user.getAchievements();
|
return user.getAchievements();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method gets all achievements of a user.
|
||||||
|
* @param name name of the user
|
||||||
|
* @return map with all achievements of a user
|
||||||
|
*/
|
||||||
|
public Map<String, String> getResults(String name) {
|
||||||
|
User user = userRepository.findByName(name);
|
||||||
|
Map<String, String> results = calculatorService.getResults(user.getFootPrintInputs());
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method gets the list of all users.
|
* This method gets the list of all users.
|
||||||
* @return list of all users
|
* @return list of all users
|
||||||
|
|||||||
@@ -250,4 +250,16 @@ public class UserControllerTest {
|
|||||||
assertEquals("mika", arg1Captor.getValue());
|
assertEquals("mika", arg1Captor.getValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getResultsTest() throws Exception {
|
||||||
|
ArgumentCaptor<String> arg1Captor = ArgumentCaptor.forClass(String.class);
|
||||||
|
mvc.perform(get("/getResults")
|
||||||
|
.param("name", "mika")
|
||||||
|
.accept(MediaType.APPLICATION_JSON))
|
||||||
|
.andDo(print())
|
||||||
|
.andExpect(status().isOk());
|
||||||
|
verify(userService, times(1)).getResults(arg1Captor.capture());
|
||||||
|
assertEquals("mika", arg1Captor.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -173,4 +173,138 @@ public class CalculatorServiceTest {
|
|||||||
Float footPrint = service.invokeExternalService(map);
|
Float footPrint = service.invokeExternalService(map);
|
||||||
Assert.assertEquals(new Float(11421.537), footPrint);
|
Assert.assertEquals(new Float(11421.537), footPrint);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getResultsTest() {
|
||||||
|
CalculatorService service = new CalculatorService();
|
||||||
|
service.restTemplate = new RestTemplate();
|
||||||
|
Map<String,String> map = new HashMap<String, String>() {{
|
||||||
|
put("input_location", "Chicago");
|
||||||
|
put("input_location_mode", "1");
|
||||||
|
put("input_size", "1");
|
||||||
|
put("input_income", "40000");
|
||||||
|
put("input_population", "1");
|
||||||
|
put("input_changed", "0");
|
||||||
|
put("input_footprint_household_adults", "1");
|
||||||
|
put("input_footprint_household_children", "0");
|
||||||
|
put("input_footprint_transportation_num_vehicles", "1");
|
||||||
|
put("input_footprint_transportation_miles1", "16100");
|
||||||
|
put("input_footprint_transportation_mpg1", "6");
|
||||||
|
put("input_footprint_transportation_fuel1", "2");
|
||||||
|
put("input_footprint_transportation_miles2", "13200");
|
||||||
|
put("input_footprint_transportation_fuel2", "0");
|
||||||
|
put("input_footprint_transportation_mpg2", "22");
|
||||||
|
put("input_footprint_transportation_miles3", "13200");
|
||||||
|
put("input_footprint_transportation_fuel3", "0");
|
||||||
|
put("input_footprint_transportation_mpg3", "22");
|
||||||
|
put("input_footprint_transportation_miles4", "13200");
|
||||||
|
put("input_footprint_transportation_fuel4", "0");
|
||||||
|
put("input_footprint_transportation_mpg4", "22");
|
||||||
|
put("input_footprint_transportation_miles5", "13200");
|
||||||
|
put("input_footprint_transportation_fuel5", "0");
|
||||||
|
put("input_footprint_transportation_mpg5", "22");
|
||||||
|
put("input_footprint_transportation_miles6", "13200");
|
||||||
|
put("input_footprint_transportation_fuel6", "0");
|
||||||
|
put("input_footprint_transportation_mpg6", "22");
|
||||||
|
put("input_footprint_transportation_miles7", "13200");
|
||||||
|
put("input_footprint_transportation_fuel7", "0");
|
||||||
|
put("input_footprint_transportation_mpg7", "22");
|
||||||
|
put("input_footprint_transportation_miles8", "13200");
|
||||||
|
put("input_footprint_transportation_fuel8", "0");
|
||||||
|
put("input_footprint_transportation_mpg8", "22");
|
||||||
|
put("input_footprint_transportation_miles9", "13200");
|
||||||
|
put("input_footprint_transportation_fuel9", "0");
|
||||||
|
put("input_footprint_transportation_mpg9", "22");
|
||||||
|
put("input_footprint_transportation_miles10", "13200");
|
||||||
|
put("input_footprint_transportation_fuel10", "0");
|
||||||
|
put("input_footprint_transportation_mpg10", "22");
|
||||||
|
put("input_footprint_transportation_groundtype", "436");
|
||||||
|
put("input_footprint_transportation_publictrans", "436");
|
||||||
|
put("input_footprint_transportation_bus", "436");
|
||||||
|
put("input_footprint_transportation_transit", "436");
|
||||||
|
put("input_footprint_transportation_commuter", "436");
|
||||||
|
put("input_footprint_transportation_intercity", "436");
|
||||||
|
put("input_footprint_transportation_airtype", "3900");
|
||||||
|
put("input_footprint_transportation_airtotal", "3900");
|
||||||
|
put("input_footprint_transportation_airshort", "3900");
|
||||||
|
put("input_footprint_transportation_airmedium", "3900");
|
||||||
|
put("input_footprint_transportation_airlong", "3900");
|
||||||
|
put("input_footprint_transportation_airextended", "3900");
|
||||||
|
put("input_footprint_housing_cdd", "40000");
|
||||||
|
put("input_footprint_housing_hdd", "40000");
|
||||||
|
put("input_footprint_housing_electricity_type", "40000");
|
||||||
|
put("input_footprint_housing_electrivity_dollars", "40000");
|
||||||
|
put("input_footprint_housing_electricity_kwh", "12632");
|
||||||
|
put("input_footprint_housing_cleanpercent", "0");
|
||||||
|
put("input_footprint_housing_naturalgas_type", "1");
|
||||||
|
put("input_footprint_housing_naturalgas_dollars", "40000");
|
||||||
|
put("input_footprint_housing_naturalgas_therms", "472");
|
||||||
|
put("input_footprint_housing_naturalgas_cuft", "40000");
|
||||||
|
put("input_footprint_housing_heatingoil_type", "40000");
|
||||||
|
put("input_footprint_housing_heatingoil_dollars", "40000");
|
||||||
|
put("input_footprint_housing_heatingoil_gallons", "73");
|
||||||
|
put("input_footprint_housing_heatingoil_dollars_per_gallon", "40000");
|
||||||
|
put("input_footprint_housing_squarefeet", "1850");
|
||||||
|
put("input_footprint_housing_watersewage", "100");
|
||||||
|
put("input_footprint_housing_gco2_per_kwh", "40000");
|
||||||
|
put("input_footprint_shopping_food_meatfisheggs_default", "40000");
|
||||||
|
put("input_footprint_shopping_food_meat_beefpork_default", "40000");
|
||||||
|
put("input_footprint_shopping_food_meat_poultry_default", "40000");
|
||||||
|
put("input_footprint_shopping_food_meat_fish_default", "40000");
|
||||||
|
put("input_footprint_shopping_food_meat_other_default", "40000");
|
||||||
|
put("input_footprint_shopping_food_fruitvegetables_default", "40000");
|
||||||
|
put("input_footprint_shopping_food_dairy_default", "4.2");
|
||||||
|
put("input_footprint_shopping_food_cereals_default", "40000");
|
||||||
|
put("input_footprint_shopping_food_otherfood_default", "40000");
|
||||||
|
put("input_footprint_shopping_food_meattype", "40000");
|
||||||
|
put("input_footprint_shopping_food_meatfisheggs", "2.4");
|
||||||
|
put("input_footprint_shopping_food_meat_beefpork", "2.4");
|
||||||
|
put("input_footprint_shopping_food_meat_poultry", "2.4");
|
||||||
|
put("input_footprint_shopping_food_meat_fish", "2.4");
|
||||||
|
put("input_footprint_shopping_food_meat_other", "2.4");
|
||||||
|
put("input_footprint_shopping_food_cereals", "4.1");
|
||||||
|
put("input_footprint_shopping_food_dairy", "2.2");
|
||||||
|
put("input_footprint_shopping_food_fruitvegetables", "3.5");
|
||||||
|
put("input_footprint_shopping_food_otherfood", "3.4");
|
||||||
|
put("input_footprint_shopping_goods_default_furnitureappliances", "1310");
|
||||||
|
put("input_footprint_shopping_goods_default_clothing", "1310");
|
||||||
|
put("input_footprint_shopping_goods_default_other_entertainment", "1310");
|
||||||
|
put("input_footprint_shopping_goods_default_other_office", "1310");
|
||||||
|
put("input_footprint_shopping_goods_default_other_personalcare", "1310");
|
||||||
|
put("input_footprint_shopping_goods_default_other_autoparts", "1310");
|
||||||
|
put("input_footprint_shopping_goods_default_other_medical", "1310");
|
||||||
|
put("input_footprint_shopping_goods_type", "1310");
|
||||||
|
put("input_footprint_shopping_goods_total", "1310");
|
||||||
|
put("input_footprint_shopping_goods_furnitureappliances", "1310");
|
||||||
|
put("input_footprint_shopping_goods_clothing", "1310");
|
||||||
|
put("input_footprint_shopping_goods_other_type", "1310");
|
||||||
|
put("input_footprint_shopping_goods_other_total", "1310");
|
||||||
|
put("input_footprint_shopping_goods_other_entertainment", "1310");
|
||||||
|
put("input_footprint_shopping_goods_other_office", "1310");
|
||||||
|
put("input_footprint_shopping_goods_other_personalcare", "1310");
|
||||||
|
put("input_footprint_shopping_goods_other_autoparts", "1310");
|
||||||
|
put("input_footprint_shopping_goods_other_medical", "1310");
|
||||||
|
put("input_footprint_shopping_services_type", "1310");
|
||||||
|
put("input_footprint_shopping_services_total", "1310");
|
||||||
|
put("input_footprint_shopping_services_healthcare", "1310");
|
||||||
|
put("input_footprint_shopping_services_education", "1310");
|
||||||
|
put("input_footprint_shopping_services_communications", "1310");
|
||||||
|
put("input_footprint_shopping_services_vehicleservices", "1310");
|
||||||
|
put("input_footprint_shopping_services_finance", "1310");
|
||||||
|
put("input_footprint_shopping_services_household", "1310");
|
||||||
|
put("input_footprint_shopping_services_charity", "1310");
|
||||||
|
put("input_footprint_shopping_services_miscservices", "1310");
|
||||||
|
put("internal_state_abbreviation", "US");
|
||||||
|
put("input_footprint_shopping_services_total", "2413");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Map<String, String> result = new HashMap<>();
|
||||||
|
result.put("transport", "10769.855687");
|
||||||
|
result.put("housing", "556.831359");
|
||||||
|
result.put("food", "0.028481");
|
||||||
|
result.put("goods", "55.256948");
|
||||||
|
result.put("services", "39.564835");
|
||||||
|
Map<String, String> footPrint = service.getResults(map);
|
||||||
|
Assert.assertEquals(result, footPrint);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user