Skip to content

Commit

Permalink
Merge pull request #50 from wimdetr/Feature50
Browse files Browse the repository at this point in the history
Er zijn een aantal features samengenomen in deze commit, m.n: 59-64 (…
  • Loading branch information
wimdetr authored May 4, 2017
2 parents c4384b1 + 3146f92 commit c56f7be
Show file tree
Hide file tree
Showing 55 changed files with 1,997 additions and 605 deletions.
1 change: 1 addition & 0 deletions src/META-INF/persistence.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
<class>domein.Persoon</class>
<class>domein.Werkgever</class>
<class>domein.Admin</class>
<class>domein.Doelgroep</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.schema-generation.database.action" value="create"/>
Expand Down
32 changes: 28 additions & 4 deletions src/controllers/AnalyseCard.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,18 @@
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.control.Label;
import javafx.scene.image.ImageView;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import util.NumberUtil;

/**
*
Expand All @@ -41,7 +45,9 @@ public class AnalyseCard extends VBox {
private Label bedrijfLabel;

@FXML
private HBox kostbaatbox, kostbaatboxkost, kostbaatboxbaat;
private GridPane kostbaatbox;
@FXML
private HBox kostbaatboxkost, kostbaatboxbaat, resultBox;

@FXML
private Label kostenLabel, batenLabel;
Expand Down Expand Up @@ -70,14 +76,32 @@ private void fillInCard() {
TODO: Fill out rest of the labels. Will do when DB gets used.
*/

double kosten = analyse.getResultaatKosten();
double baten = analyse.getResultaatBaten();
double resultaat = analyse.getResultaat();
bedrijfLabel.setText(analyse.getWerkgever().getNaam());
bedrijfOnderdeelLabel.setText(analyse.getWerkgever().getNaamAfdeling());
kostenLabel.setText(NumberUtil.formatDouble(kosten));
batenLabel.setText(NumberUtil.formatDouble(baten));
resultaatLabel.setText(NumberUtil.formatDouble(resultaat));


if (resultaat >= 0) {
resultBox.getStyleClass().add("resultBoxPositive");
} else {
resultBox.getStyleClass().add("resultBoxNegative");
}
if (kosten + baten != 0) {
double kostShare = kosten / (kosten + baten);
double baatShare = baten / (kosten + baten);
kostbaatbox.getColumnConstraints().get(0).setPercentWidth(NumberUtil.getAsPercent(kostShare));
kostbaatbox.getColumnConstraints().get(1).setPercentWidth(NumberUtil.getAsPercent(baatShare));

}
}

@FXML
void showDetails(ActionEvent event) {
// shitty code alert, how do i fix this? Add parent to constructor?
BorderPane parent = (BorderPane) this.getParent().getParent().getParent().getParent().getParent().getParent();
parent.setCenter(new OverzichtAnalyseScherm(analyse, schermBeheer));
schermBeheer.setMiddenScherm(new OverzichtAnalyseScherm(analyse, schermBeheer));
}
}
112 changes: 33 additions & 79 deletions src/controllers/ArchiefScherm.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@
*/
package controllers;



import domein.Analyse;
import domein.Werkgever;
import java.io.File;
Expand All @@ -15,6 +13,8 @@
import java.math.RoundingMode;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.Optional;
Expand All @@ -30,11 +30,14 @@
import javafx.fxml.FXMLLoader;
import javafx.scene.control.Alert;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableRow;
import javafx.scene.control.TableView;
import javafx.scene.control.TextInputDialog;
import javafx.scene.control.TreeItem;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.BorderPane;
import javafx.stage.DirectoryChooser;
import util.NumberUtil;

/**
*
Expand All @@ -47,7 +50,6 @@ public class ArchiefScherm extends BorderPane {

@FXML
private TableColumn<Analyse, Number> idColumn;

@FXML
private TableColumn<Analyse, String> voornaamColumn;

Expand All @@ -61,7 +63,10 @@ public class ArchiefScherm extends BorderPane {
private TableColumn<Analyse, String> departementColumn;

@FXML
private TableColumn<Analyse, Number> resultaatColumn;
private TableColumn<Analyse, String> resultaatColumn;

@FXML
private TableColumn<Analyse, String> datumColumn;

private ObservableList<Analyse> data;

Expand All @@ -79,82 +84,31 @@ public ArchiefScherm(Schermbeheer beheer) {
this.beheer = beheer;
data = FXCollections.observableArrayList(beheer.getDc().getAnalyseRepo().getLijst());

// -> table moet van Jobcoach zijn niet van analyse!
// hoe probleem met lijst dep. oplossen??
idColumn.setCellValueFactory(celldata -> new SimpleIntegerProperty(celldata.getValue().getId()));
voornaamColumn.setCellValueFactory(celldata -> new SimpleStringProperty("Wim"));
naamColumn.setCellValueFactory(celldata -> new SimpleStringProperty("De Troyer"));
bedrijfColumn.setCellValueFactory(celldata -> new SimpleStringProperty(celldata.getValue().getWerkgever().getNaam()));
departementColumn.setCellValueFactory(celldata -> new SimpleStringProperty("Dienst IT"));
Random rnd = new Random();
resultaatColumn.setCellValueFactory(celldata -> new SimpleDoubleProperty(round(rnd.nextDouble() * 10000, 2)));
idColumn.setCellValueFactory(e -> new SimpleIntegerProperty(e.getValue().getId()));
voornaamColumn.setCellValueFactory(e -> e.getValue().getJobcoach().voornaamProperty());
naamColumn.setCellValueFactory(e -> e.getValue().getJobcoach().naamProperty());
bedrijfColumn.setCellValueFactory(e -> new SimpleStringProperty(e.getValue().getWerkgever().getNaam()));
departementColumn.setCellValueFactory(e -> new SimpleStringProperty(e.getValue().getWerkgever().getNaamAfdeling()));
resultaatColumn.setCellValueFactory(e -> new SimpleStringProperty(NumberUtil.formatDouble(e.getValue().getResultaat())));
datumColumn.setCellValueFactory(e
-> {
SimpleStringProperty property = new SimpleStringProperty();
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
property.setValue(dateFormat.format(e.getValue().getLaatsteAanpasDatum()));
return property;
});
archiefTableView.setRowFactory((e) -> {
TableRow<Analyse> rij = new TableRow<>();
rij.setOnMouseClicked(event -> {
if (event.getClickCount() == 2 && !rij.isEmpty()) {
Analyse a = rij.getItem();
OverzichtAnalyseScherm scherm = new OverzichtAnalyseScherm(a, beheer);
beheer.setMiddenScherm(scherm);
}
});
return rij;
});
archiefTableView.setItems(data);
}

private double round(double value, int places) {
if (places < 0) {
throw new IllegalArgumentException();
}

BigDecimal bd = new BigDecimal(value);
bd = bd.setScale(places, RoundingMode.HALF_UP);
return bd.doubleValue();
}

@FXML
void doExport(ActionEvent event) {
Set<Werkgever> werkgevers = new HashSet<>();
for (Analyse ana : beheer.getDc().getAnalyseRepo().getLijst()) {
werkgevers.add(ana.getWerkgever());
}

TextInputDialog dialog = new TextInputDialog();
dialog.setTitle("Exporteer werkgevers");
dialog.setHeaderText("Bestandsnaam invoeren");
dialog.setContentText("Voer een passende bestaandsnaam in:");

Optional<String> result = dialog.showAndWait();
if (result.isPresent() && !result.get().isEmpty()) {
String naamBestand = result.get() + ".csv";
DirectoryChooser dirChooser = new DirectoryChooser();
File chosenDir = dirChooser.showDialog(this.getScene().getWindow());
if (chosenDir != null) {
StringBuilder csvBuilder = new StringBuilder();
csvBuilder
.append("Organisatie;")
.append("Gemeente;")
.append("Postcode;")
.append("Huisnr;")
.append("\n");
werkgevers.forEach((werkgever) -> {
csvBuilder.append(werkgever.getNaam())
.append(";")
.append(werkgever.getGemeente())
.append(";")
.append(werkgever.getPostcode())
.append(";")
.append(werkgever.getNummer())
.append(";")
.append("\n");
});
String csvString = csvBuilder.toString();
String location = chosenDir.toString() + "/" + naamBestand;
try {
Files.write(Paths.get(location), csvString.getBytes());
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("");
alert.setHeaderText("Exporteren succesvol!");
alert.setContentText("Het bestand is succesvol geëxporteerd! \n \n" + "Locatie:" + location);

alert.showAndWait();
} catch (IOException ex) {
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Error");
alert.setHeaderText("Exporteren mislukt!");
alert.setContentText("Er is iets foutgelopen, probeer het nog eens.");

}
}
}
}
}
93 changes: 93 additions & 0 deletions src/controllers/DoelgroepBeherenScherm.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package controllers;

import domein.Doelgroep;
import java.io.IOException;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableRow;
import javafx.scene.control.TableView;
import javafx.scene.layout.BorderPane;
import javafx.util.Callback;
import util.NumberUtil;

/**
*
* @author wimde
*/
public class DoelgroepBeherenScherm extends BorderPane {

@FXML
private TableView<Doelgroep> doelgroepTableView;

@FXML
private TableColumn<Doelgroep, Number> idColumn;

@FXML
private TableColumn<Doelgroep, String> beschrijvingColumn;

@FXML
private TableColumn<Doelgroep, String> maxLoonColumn;

@FXML
private TableColumn<Doelgroep, String> doelgroepverminderingColumn;

@FXML
private TableColumn<Doelgroep, String> actiefColumn;

private Schermbeheer beheer;

public DoelgroepBeherenScherm(Schermbeheer beheer) {
this.beheer = beheer;
FXMLLoader loader = new FXMLLoader(getClass().getResource("/gui/DoelgroepBeherenScherm.fxml"));
loader.setRoot(this);
loader.setController(this);
try {
loader.load();
} catch (IOException ex) {
throw new RuntimeException(ex.getMessage());
}

/*
cellvalue factories
*/
idColumn.setCellValueFactory(e -> new SimpleIntegerProperty(e.getValue().getDoelgroepId()));
beschrijvingColumn.setCellValueFactory(e -> new SimpleStringProperty(e.getValue().getDoelgroepText()));
maxLoonColumn.setCellValueFactory(e -> new SimpleStringProperty(NumberUtil.formatDouble(e.getValue().getDoelgroepMaxLoon())));
doelgroepverminderingColumn.setCellValueFactory(e -> new SimpleStringProperty(NumberUtil.formatDouble(e.getValue().getDoelgroepWaarde())));
actiefColumn.setCellValueFactory((e) -> {
e.getValue().getIsVerwijderd();
String answer = e.getValue().getIsVerwijderd() ? "NEEN" : "JA";
return new SimpleStringProperty(answer);
});
doelgroepTableView.setItems(FXCollections.observableList(beheer.getDc().getDoelgroepRepo().getLijst()));
doelgroepTableView.setRowFactory((e) -> {
TableRow<Doelgroep> rij = new TableRow<>();
rij.setOnMouseClicked(ev -> {
if (ev.getClickCount() == 2 && !rij.isEmpty()) {
Doelgroep d = rij.getItem();
beheer.plaatsPopUpScherm(new DoelgroepWijzigenScherm(beheer,d), "Doelgroep wijzigen");
doelgroepTableView.refresh();
}
});
return rij;
});
}

@FXML
void doelgroepToevoegen(ActionEvent event) {
beheer.plaatsPopUpScherm(new DoelgroepToevoegenScherm(beheer), "Doelgroep toevoegen");
doelgroepTableView.refresh();
}

}
Loading

0 comments on commit c56f7be

Please sign in to comment.