Merge branch 'Update/leaderBoards' into 'master'

Update/leader boards

See merge request cse1105/2018-2019/oopp-group-43/template!88
This commit is contained in:
Mika Wauben
2019-04-13 10:38:58 +00:00
4 changed files with 54 additions and 20 deletions

View File

@@ -1,18 +1,34 @@
package greenify.client; package greenify.client;
import javafx.beans.property.SimpleDoubleProperty; import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
public class Friend { public class Friend {
private SimpleIntegerProperty place;
private SimpleStringProperty friend; private SimpleStringProperty friend;
private SimpleDoubleProperty score; private SimpleDoubleProperty score;
public Friend(String friend, Double friendScore) { /**
* Constructor for a friend.
* @param place place in the leaderboard
* @param friend name of the user
* @param friendScore score of the user
*/
public Friend(Integer place, String friend, Double friendScore) {
this.place = new SimpleIntegerProperty(place);
this.friend = new SimpleStringProperty(friend); this.friend = new SimpleStringProperty(friend);
this.score = new SimpleDoubleProperty(friendScore); this.score = new SimpleDoubleProperty(friendScore);
} }
public Integer getPlace() {
return place.get();
}
public void setPlace(Integer place) {
this.place = new SimpleIntegerProperty(place);
}
public String getFriend() { public String getFriend() {
return friend.get(); return friend.get();

View File

@@ -109,18 +109,24 @@ public class DashBoardController {
@FXML @FXML
private TableView<Friend> globalLeaderboard; private TableView<Friend> globalLeaderboard;
@FXML @FXML
private TableColumn<Friend, Integer> globalPlace;
@FXML
private TableColumn<Friend, String> globalUser; private TableColumn<Friend, String> globalUser;
@FXML @FXML
private TableColumn<Friend, Float> globalScore; private TableColumn<Friend, Float> globalScore;
@FXML @FXML
private TableView<Friend> developmentLeaderboard; private TableView<Friend> developmentLeaderboard;
@FXML @FXML
private TableColumn<Friend, Integer> developmentPlace;
@FXML
private TableColumn<Friend, String> developmentUser; private TableColumn<Friend, String> developmentUser;
@FXML @FXML
private TableColumn<Friend, Float> developmentScore; private TableColumn<Friend, Float> developmentScore;
@FXML @FXML
private TableView<Friend> friendLeaderboard; private TableView<Friend> friendLeaderboard;
@FXML @FXML
private TableColumn<Friend, Integer> friendPlace;
@FXML
private TableColumn<Friend, String> friendUser; private TableColumn<Friend, String> friendUser;
@FXML @FXML
private TableColumn<Friend, Float> friendScore; private TableColumn<Friend, Float> friendScore;
@@ -239,15 +245,18 @@ public class DashBoardController {
logOutButton.setSkin(new MyButtonSkin(logOutButton)); logOutButton.setSkin(new MyButtonSkin(logOutButton));
friendsColumn.setCellValueFactory(new PropertyValueFactory<>("Friend")); friendsColumn.setCellValueFactory(new PropertyValueFactory<>("Friend"));
scoreColumn.setCellValueFactory(new PropertyValueFactory<>("Score")); scoreColumn.setCellValueFactory(new PropertyValueFactory<>("Score"));
globalPlace.setCellValueFactory(new PropertyValueFactory<>("Place"));
globalUser.setCellValueFactory(new PropertyValueFactory<>("Friend")); globalUser.setCellValueFactory(new PropertyValueFactory<>("Friend"));
globalScore.setCellValueFactory(new PropertyValueFactory<>("Score")); globalScore.setCellValueFactory(new PropertyValueFactory<>("Score"));
developmentUser.setCellValueFactory(new PropertyValueFactory<>("Friend")); developmentUser.setCellValueFactory(new PropertyValueFactory<>("Friend"));
developmentPlace.setCellValueFactory(new PropertyValueFactory<>("Place"));
developmentScore.setCellValueFactory(new PropertyValueFactory<>("Score")); developmentScore.setCellValueFactory(new PropertyValueFactory<>("Score"));
friendPlace.setCellValueFactory(new PropertyValueFactory<>("Place"));
friendUser.setCellValueFactory(new PropertyValueFactory<>("Friend")); friendUser.setCellValueFactory(new PropertyValueFactory<>("Friend"));
friendScore.setCellValueFactory(new PropertyValueFactory<>("Score")); friendScore.setCellValueFactory(new PropertyValueFactory<>("Score"));
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(i, friendList.get(i),
userService.getFootprint(friendList.get(i))); userService.getFootprint(friendList.get(i)));
data.add(friend); data.add(friend);
} }
@@ -490,6 +499,9 @@ public class DashBoardController {
//development leaderboard //development leaderboard
developmentLeaderboard.getItems().clear(); developmentLeaderboard.getItems().clear();
developmentData.removeAll(); developmentData.removeAll();
//friends leaderboard
friendLeaderboard.getItems().clear();
friendLeaderData.removeAll();
//load the fxml file //load the fxml file
Parent dash = Application.load(this.getClass().getClassLoader() Parent dash = Application.load(this.getClass().getClassLoader()
@@ -604,14 +616,15 @@ public class DashBoardController {
List<String> userList = userService.getAllUsers(); List<String> userList = userService.getAllUsers();
sortScores(userList); sortScores(userList);
for (int i = userList.size() - 1; i >= 0; i--) { for (int i = userList.size() - 1; i >= 0; i--) {
Friend user = new Friend(userList.get(i), userService.getFootprint(userList.get(i))); Friend user = new Friend(userList.size() - i, userList.get(i),
userService.getFootprint(userList.get(i)));
globalLeaderData.add(user); globalLeaderData.add(user);
} }
List<String> secondList = sortDiffScores(userList); List<String> secondList = sortDiffScores(userList);
for (int j = 0; j < userList.size(); j++) { for (int j = 0; j < userList.size(); j++) {
double diff = Math.round((userService.getFirstFootprint(secondList.get(j)) double diff = Math.round((userService.getFirstFootprint(secondList.get(j))
- userService.getFootprint(secondList.get(j))) * 10) / 10.0; - userService.getFootprint(secondList.get(j))) * 10) / 10.0;
Friend diffUser = new Friend(secondList.get(j), diff); Friend diffUser = new Friend(j + 1, secondList.get(j), diff);
developmentData.add(diffUser); developmentData.add(diffUser);
} }
globalLeaderboard.setItems(globalLeaderData); globalLeaderboard.setItems(globalLeaderData);
@@ -662,14 +675,14 @@ public class DashBoardController {
friendLeaderData.removeAll(); friendLeaderData.removeAll();
sortDiffScores(wholeList); sortDiffScores(wholeList);
for (int i = friendList.size() - 1; i >= 0 ; i--) { for (int i = friendList.size() - 1; i >= 0 ; i--) {
Friend user = new Friend(friendList.get(i), userService Friend user = new Friend(i, friendList.get(i), userService
.getFootprint(friendList.get(i))); .getFootprint(friendList.get(i)));
data.add(user); data.add(user);
} }
for (int j = 0; j < wholeList.size(); j++) { for (int j = 0; j < wholeList.size(); j++) {
double diff = Math.round((userService.getFirstFootprint(wholeList.get(j)) double diff = Math.round((userService.getFirstFootprint(wholeList.get(j))
- userService.getFootprint(wholeList.get(j))) * 10) / 10.0; - userService.getFootprint(wholeList.get(j))) * 10) / 10.0;
Friend diffUser = new Friend(wholeList.get(j), diff); Friend diffUser = new Friend(j + 1, wholeList.get(j), diff);
friendLeaderData.add(diffUser); friendLeaderData.add(diffUser);
} }
friendsTable.setItems(data); friendsTable.setItems(data);

View File

@@ -451,16 +451,11 @@
</ImageView> </ImageView>
</graphic> </graphic>
</Button> </Button>
<TableView fx:id="globalLeaderboard" layoutX="56.0" layoutY="220.0" prefHeight="333.0" prefWidth="200.0"> <TableView fx:id="globalLeaderboard" layoutX="53.0" layoutY="220.0" prefHeight="334.0" prefWidth="207.0">
<columns> <columns>
<TableColumn fx:id="globalUser" prefWidth="121.0" text="User" /> <TableColumn fx:id="globalPlace" prefWidth="30.0" text="#" />
<TableColumn fx:id="globalScore" prefWidth="78.0" text="Score" /> <TableColumn fx:id="globalUser" prefWidth="75.0" text="User" />
</columns> <TableColumn fx:id="globalScore" prefWidth="100.0" text="Score" />
</TableView>
<TableView fx:id="developmentLeaderboard" layoutX="302.0" layoutY="220.0" prefHeight="333.0" prefWidth="200.0">
<columns>
<TableColumn fx:id="developmentUser" prefWidth="126.0" text="User" />
<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">
@@ -562,6 +557,13 @@
</Button> </Button>
</children> </children>
</GridPane> </GridPane>
<TableView fx:id="developmentLeaderboard" layoutX="292.0" layoutY="220.0" prefHeight="334.0" prefWidth="207.0">
<columns>
<TableColumn fx:id="developmentPlace" prefWidth="30.0" text="#" />
<TableColumn fx:id="developmentUser" prefWidth="75.0" text="User" />
<TableColumn fx:id="developmentScore" prefWidth="100.0" text="Score" />
</columns>
</TableView>
</children> </children>
</AnchorPane> </AnchorPane>
<AnchorPane fx:id="friendsPane" layoutX="216.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="friendsPane" layoutX="216.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">
@@ -576,7 +578,7 @@
<Font size="20.0" /> <Font size="20.0" />
</font> </font>
</Text> </Text>
<TableView fx:id="friendsTable" layoutX="60.0" layoutY="170.0" prefHeight="426.0" prefWidth="216.0" style="-fx-background-color: #e1fcd9;"> <TableView fx:id="friendsTable" layoutX="60.0" layoutY="170.0" prefHeight="426.0" prefWidth="214.0" style="-fx-background-color: #e1fcd9;">
<columns> <columns>
<TableColumn fx:id="friendsColumn" prefWidth="107.0" text="Friend" /> <TableColumn fx:id="friendsColumn" prefWidth="107.0" text="Friend" />
<TableColumn fx:id="scoreColumn" prefWidth="108.0" text="Score" /> <TableColumn fx:id="scoreColumn" prefWidth="108.0" text="Score" />
@@ -590,10 +592,11 @@
<Font size="20.0" /> <Font size="20.0" />
</font> </font>
</Text> </Text>
<TableView fx:id="friendLeaderboard" layoutX="300.0" layoutY="170.0" prefHeight="426.0" prefWidth="216.0" style="-fx-background-color: #e1fcd9;"> <TableView fx:id="friendLeaderboard" layoutX="300.0" layoutY="170.0" prefHeight="426.0" prefWidth="232.0" style="-fx-background-color: #e1fcd9;">
<columns> <columns>
<TableColumn fx:id="friendUser" prefWidth="107.0" text="Friend" /> <TableColumn fx:id="friendPlace" prefWidth="30.0" resizable="false" text="#" />
<TableColumn fx:id="friendScore" prefWidth="108.0" text="Score" /> <TableColumn fx:id="friendUser" minWidth="30.0" prefWidth="100.0" resizable="false" text="Friend" />
<TableColumn fx:id="friendScore" minWidth="30.0" prefWidth="100.0" resizable="false" text="Score" />
</columns> </columns>
<columnResizePolicy> <columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" /> <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />

View File

@@ -7,9 +7,11 @@ import org.junit.jupiter.api.Assertions;
public class FriendTest { public class FriendTest {
@Test @Test
public void setAndGetTest() { public void setAndGetTest() {
Friend test = new Friend("ceren", 10.0); Friend test = new Friend(1,"ceren", 10.0);
test.setPlace(1);
test.setFriend("greenify"); test.setFriend("greenify");
test.setScore(15.0); test.setScore(15.0);
Assertions.assertEquals(test.getPlace(), 1);
assertEquals(test.getFriend(), "greenify"); assertEquals(test.getFriend(), "greenify");
Assertions.assertEquals(test.getScore(), 15.0); Assertions.assertEquals(test.getScore(), 15.0);
} }