Luotu sarake näkymään ja suurinosa logiikasta kohdallaan
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
This commit is contained in:
@@ -268,6 +268,23 @@ public class Kuljetus implements TietokantaOlio {
|
|||||||
'}';
|
'}';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void nollaa() {
|
||||||
|
setSalaatit(0);
|
||||||
|
setPääruoat(0);
|
||||||
|
setJälkiruoat(0);
|
||||||
|
setLisätieto("");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void palautaMäärät(Asiakas asiakas) {
|
||||||
|
setSalaatit(asiakas.getSalaatit());
|
||||||
|
setPääruoat(asiakas.getPääruoat());
|
||||||
|
setJälkiruoat(asiakas.getJälkiruoat());
|
||||||
|
setLisätieto(asiakas.getLisätiedot());
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean kuljetetaan() {
|
||||||
|
return salaatit > 0 || pääruoat > 0 || jälkiruoat > 0 || !lisätieto.isEmpty();
|
||||||
|
}
|
||||||
public int getId() {
|
public int getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,10 +3,13 @@ package fi.lpam.gui;
|
|||||||
import fi.lpam.dataluokat.Asiakas;
|
import fi.lpam.dataluokat.Asiakas;
|
||||||
import fi.lpam.dataluokat.Kierros;
|
import fi.lpam.dataluokat.Kierros;
|
||||||
import fi.lpam.dataluokat.Kuljetus;
|
import fi.lpam.dataluokat.Kuljetus;
|
||||||
|
import fi.lpam.gui.elementit.KuljetaTableCell;
|
||||||
import fi.lpam.tulostajat.KuljetusListaTulostaja;
|
import fi.lpam.tulostajat.KuljetusListaTulostaja;
|
||||||
import fi.lpam.gui.elementit.MaaraTableColumn;
|
import fi.lpam.gui.elementit.MaaraTableColumn;
|
||||||
import fi.lpam.gui.elementit.TabPohja;
|
import fi.lpam.gui.elementit.TabPohja;
|
||||||
|
|
||||||
|
import javafx.beans.property.SimpleBooleanProperty;
|
||||||
|
import javafx.beans.value.ObservableValue;
|
||||||
import javafx.collections.FXCollections;
|
import javafx.collections.FXCollections;
|
||||||
import javafx.collections.ObservableList;
|
import javafx.collections.ObservableList;
|
||||||
import javafx.geometry.Pos;
|
import javafx.geometry.Pos;
|
||||||
@@ -16,9 +19,11 @@ import javafx.scene.control.cell.PropertyValueFactory;
|
|||||||
import javafx.scene.control.cell.TextFieldTableCell;
|
import javafx.scene.control.cell.TextFieldTableCell;
|
||||||
import javafx.scene.layout.BorderPane;
|
import javafx.scene.layout.BorderPane;
|
||||||
import javafx.scene.layout.HBox;
|
import javafx.scene.layout.HBox;
|
||||||
|
import javafx.util.Callback;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
@@ -28,14 +33,19 @@ public class KuljetusListat extends TabPohja {
|
|||||||
private final TableView<Kuljetus> tableView = new TableView<>();
|
private final TableView<Kuljetus> tableView = new TableView<>();
|
||||||
private final DatePicker datePicker = new DatePicker(LocalDate.now());
|
private final DatePicker datePicker = new DatePicker(LocalDate.now());
|
||||||
private final ComboBox<Integer> kierrosValinta = new ComboBox<>(FXCollections.observableArrayList(Kierros.haeKierrosNumerot()));
|
private final ComboBox<Integer> kierrosValinta = new ComboBox<>(FXCollections.observableArrayList(Kierros.haeKierrosNumerot()));
|
||||||
private final Label tallennusStatus;
|
public static Label tallennusStatus;
|
||||||
private final Button btnTulosta;
|
private final Button btnTulosta;
|
||||||
|
private final HashMap<Integer, Asiakas> asiakkaat = new HashMap<>();
|
||||||
|
|
||||||
public KuljetusListat() {
|
public KuljetusListat() {
|
||||||
ObservableList<Integer> määräVaihtoehdot = FXCollections.observableArrayList();
|
ObservableList<Integer> määräVaihtoehdot = FXCollections.observableArrayList();
|
||||||
for (int i = 0; i <= 10; i++) {
|
for (int i = 0; i <= 10; i++) {
|
||||||
määräVaihtoehdot.add(i);}
|
määräVaihtoehdot.add(i);}
|
||||||
|
|
||||||
|
for (Asiakas asiakas : Objects.requireNonNull(Asiakas.haeKaikki())) {
|
||||||
|
asiakkaat.put(asiakas.getId(), asiakas);
|
||||||
|
}
|
||||||
|
|
||||||
BorderPane root = new BorderPane();
|
BorderPane root = new BorderPane();
|
||||||
root.setPadding(oletusInsets);
|
root.setPadding(oletusInsets);
|
||||||
this.getChildren().add(root);
|
this.getChildren().add(root);
|
||||||
@@ -83,6 +93,11 @@ public class KuljetusListat extends TabPohja {
|
|||||||
tableView.setPlaceholder(new Label("Valitse kierros aloittaaksesi"));
|
tableView.setPlaceholder(new Label("Valitse kierros aloittaaksesi"));
|
||||||
root.setCenter(tableView);
|
root.setCenter(tableView);
|
||||||
|
|
||||||
|
TableColumn<Kuljetus, Boolean> tcNappi = new TableColumn<>("Kuljeta");
|
||||||
|
tcNappi.setMinWidth(100);
|
||||||
|
tcNappi.setCellFactory(_ -> new KuljetaTableCell(asiakkaat, tableView));
|
||||||
|
tcNappi.setCellValueFactory(features -> new SimpleBooleanProperty(features.getValue() != null));
|
||||||
|
|
||||||
TableColumn<Kuljetus, String> tcNimi = new TableColumn<>("Nimi");
|
TableColumn<Kuljetus, String> tcNimi = new TableColumn<>("Nimi");
|
||||||
tcNimi.setMinWidth(150);
|
tcNimi.setMinWidth(150);
|
||||||
tcNimi.setCellFactory(TextFieldTableCell.forTableColumn());
|
tcNimi.setCellFactory(TextFieldTableCell.forTableColumn());
|
||||||
@@ -128,7 +143,7 @@ public class KuljetusListat extends TabPohja {
|
|||||||
tcAvainTieto.setCellValueFactory(new PropertyValueFactory<>("avainTieto"));
|
tcAvainTieto.setCellValueFactory(new PropertyValueFactory<>("avainTieto"));
|
||||||
tcAvainTieto.setOnEditCommit((TableColumn.CellEditEvent<Kuljetus, String> event) -> {event.getTableView().getItems().get(event.getTablePosition().getRow()).setAvainTieto(event.getNewValue()); tallennusStatus.setText("Tallennettu: Ei");});
|
tcAvainTieto.setOnEditCommit((TableColumn.CellEditEvent<Kuljetus, String> event) -> {event.getTableView().getItems().get(event.getTablePosition().getRow()).setAvainTieto(event.getNewValue()); tallennusStatus.setText("Tallennettu: Ei");});
|
||||||
|
|
||||||
tableView.getColumns().addAll(tcNimi, tcOsoite, tcSalaatit, tcPääruoat, tcJälkiruoat, tcRuokarajoite, tcLisätieto, tcAvainTieto);
|
tableView.getColumns().addAll(tcNappi, tcNimi, tcOsoite, tcSalaatit, tcPääruoat, tcJälkiruoat, tcRuokarajoite, tcLisätieto, tcAvainTieto);
|
||||||
|
|
||||||
for (TableColumn<Kuljetus, ?> sarake : tableView.getColumns()) {
|
for (TableColumn<Kuljetus, ?> sarake : tableView.getColumns()) {
|
||||||
sarake.setSortable(false);
|
sarake.setSortable(false);
|
||||||
@@ -136,6 +151,8 @@ public class KuljetusListat extends TabPohja {
|
|||||||
sarake.setResizable(true);
|
sarake.setResizable(true);
|
||||||
sarake.setStyle("-fx-alignment: CENTER; -fx-font-size: 16px;");
|
sarake.setStyle("-fx-alignment: CENTER; -fx-font-size: 16px;");
|
||||||
}
|
}
|
||||||
|
tcNimi.setEditable(false);
|
||||||
|
tcNimi.setResizable(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void päivitäListanäkymä() {
|
private void päivitäListanäkymä() {
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
package fi.lpam.gui.elementit;
|
||||||
|
|
||||||
|
import fi.lpam.dataluokat.Asiakas;
|
||||||
|
import fi.lpam.dataluokat.Kuljetus;
|
||||||
|
import fi.lpam.gui.KuljetusListat;
|
||||||
|
import javafx.collections.FXCollections;
|
||||||
|
import javafx.collections.ObservableList;
|
||||||
|
import javafx.geometry.Insets;
|
||||||
|
import javafx.scene.control.Button;
|
||||||
|
import javafx.scene.control.ContentDisplay;
|
||||||
|
import javafx.scene.control.TableCell;
|
||||||
|
import javafx.scene.control.TableView;
|
||||||
|
import javafx.scene.layout.StackPane;
|
||||||
|
|
||||||
|
import java.sql.Array;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
public class KuljetaTableCell extends TableCell<Kuljetus, Boolean> {
|
||||||
|
private final Button nappi = new Button("Vaihda");
|
||||||
|
private final StackPane paddedNappi = new StackPane();
|
||||||
|
|
||||||
|
public KuljetaTableCell(final HashMap<Integer, Asiakas> asiakkaat, final TableView<Kuljetus> table) {
|
||||||
|
paddedNappi.setPadding(new Insets(3));
|
||||||
|
paddedNappi.getChildren().add(nappi);
|
||||||
|
nappi.setOnAction(_ -> {
|
||||||
|
Kuljetus kuljetus = getTableRow().getItem();
|
||||||
|
System.out.println(kuljetus);
|
||||||
|
if (kuljetus == null) return;
|
||||||
|
if (kuljetus.kuljetetaan()) {
|
||||||
|
kuljetus.nollaa();
|
||||||
|
System.out.println("Nollattu");
|
||||||
|
System.out.println(kuljetus);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Asiakas asiakas = asiakkaat.get(kuljetus.getAsiakasID());
|
||||||
|
System.out.println(asiakas);
|
||||||
|
kuljetus.palautaMäärät(asiakas);
|
||||||
|
System.out.println("Palautettu");
|
||||||
|
}
|
||||||
|
table.refresh();
|
||||||
|
KuljetusListat.tallennusStatus.setText("Tallennettu: Ei");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** places an add button in the row only if the row is not empty. */
|
||||||
|
@Override protected void updateItem(Boolean item, boolean empty) {
|
||||||
|
super.updateItem(item, empty);
|
||||||
|
if (!empty) {
|
||||||
|
setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
|
||||||
|
setGraphic(paddedNappi);
|
||||||
|
} else {
|
||||||
|
setGraphic(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user