10 Commits

Author SHA1 Message Date
laurimaaninka fe078f9fb8 Merge pull request 'Koodin siivousta' (#11) from feat into master
Reviewed-on: #11
2026-05-11 00:01:01 +03:00
laurimaaninka c2942a7455 Koodin siivousta
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
2026-05-11 00:00:27 +03:00
laurimaaninka 69243d9cb2 Update README.md 2026-05-10 23:40:01 +03:00
laurimaaninka 1d4056bc99 Update README.md 2026-05-10 23:39:13 +03:00
laurimaaninka c676ae8400 Update README.md 2026-05-10 23:38:43 +03:00
laurimaaninka deb2f49fb6 Merge pull request 'Riippuvuuksien päivitys' (#10) from feat into master
Reviewed-on: #10
2026-05-10 23:33:43 +03:00
laurimaaninka ded6accd29 Riippuvuuksien päivitys:
GemsFX, PdfBox, commons-logging, sqlite-jdbc

Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
2026-05-10 23:32:32 +03:00
laurimaaninka f9e868918c Versio 3.0.1
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
2026-05-10 23:26:13 +03:00
laurimaaninka f76d4413d4 Merge pull request '#8 Kosmeettisia parannuksia kierroshallintaan ja muuallekin' (#9) from feature into master
Reviewed-on: #9
2026-05-10 23:22:28 +03:00
laurimaaninka 65b4a7ef9b #8 Kosmeettisia parannuksia kierroshallintaan ja muuallekin
Signed-off-by: laurimaaninka <lauri.maaninka@gmail.com>
2026-05-10 23:21:23 +03:00
31 changed files with 134 additions and 132 deletions
+2 -2
View File
@@ -1,11 +1,11 @@
<component name="ProjectRunConfigurationManager"> <component name="ProjectRunConfigurationManager">
<configuration default="false" name="Main" type="Application" factoryName="Application" nameIsGenerated="true"> <configuration default="false" name="Main" type="Application" factoryName="Application" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="fi.lpam.ruokamanageri.Main" /> <option name="MAIN_CLASS_NAME" value="fi.lpam.Main" />
<module name="Ruokamanageri" /> <module name="Ruokamanageri" />
<option name="PROGRAM_PARAMETERS" value="DEV" /> <option name="PROGRAM_PARAMETERS" value="DEV" />
<extension name="coverage"> <extension name="coverage">
<pattern> <pattern>
<option name="PATTERN" value="fi.lpam.ruokamanageri.*" /> <option name="PATTERN" value="fi.lpam.*" />
<option name="ENABLED" value="true" /> <option name="ENABLED" value="true" />
</pattern> </pattern>
</extension> </extension>
+4
View File
@@ -1,3 +1,7 @@
# 3.0.1
- Kierroshallinnan muokkaus tukemaan paremmin useampaa kierrosta
- Kosmeettisia viilauksia muuallekin
# 3.0.0 # 3.0.0
- Lisätty lauantai ja sunnuntai mahdollisiksi kuljetuspäiviksi - Lisätty lauantai ja sunnuntai mahdollisiksi kuljetuspäiviksi
- Mahdollisuus kuljettaa (ja muokata listaa) yli 10 ateriaa per asiakas - Mahdollisuus kuljettaa (ja muokata listaa) yli 10 ateriaa per asiakas
+5 -6
View File
@@ -9,19 +9,18 @@ Pienen kotiateriapalvelun käyttöön rakennettu ohjelma sisältäen seuraavat o
- Kuljetuslistojen luominen - Kuljetuslistojen luominen
- Kuljetettujen määrien raportointi - Kuljetettujen määrien raportointi
## Toteutus # Toteutus
- SQLite tietokanta - SQLite tietokanta
- JavaFX GUI - JavaFX GUI
- Java 25 - Java 25
- Maven - Maven
## Käyttöönotto # Käyttöönotto
- Vaatimukset - Vaatimukset
- Windows - Windows
- Java 25+ - Java 25+
- Usean tietokoneen käyttöön OneDrive -tili (samanaikaisuus ei tuettu) - Usean tietokoneen käyttöön OneDrive -tili (samanaikaisuus ei tuettu)
- Lataa haluamasi julkaisuversio lähdekoodista - Lataa haluamasi ohjelmaversio julkaisuista
- Maven `package` komennolla projektista luodaan .jar tiedosto - Aja .JAR tiedosto
- .jar tiedosto sisältää kaikki riippuvuudet - Tietokanta sijaitsee osoitteessa `~/OneDrive/Kuljetusruokasovellus/tietokanta.db`
- Tietokantatiedosto asuu osoitteessa `$KOTIKANSIO/OneDrive/Kuljetusruokasovellus/tietokanta.db`
- Ohjelma luo tietokannan, mikäli sitä ei löydy. - Ohjelma luo tietokannan, mikäli sitä ei löydy.
+7 -7
View File
@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>fi.lpam.ruokamanageri</groupId> <groupId>fi.lpam.ruokamanageri</groupId>
<artifactId>Ruokamanageri</artifactId> <artifactId>Ruokamanageri</artifactId>
<version>3.0.0</version> <version>3.0.1</version>
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>25</maven.compiler.source> <maven.compiler.source>25</maven.compiler.source>
@@ -43,24 +43,24 @@
<dependency> <dependency>
<groupId>com.dlsc.gemsfx</groupId> <groupId>com.dlsc.gemsfx</groupId>
<artifactId>gemsfx</artifactId> <artifactId>gemsfx</artifactId>
<version>3.10.1</version> <version>4.0.5</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.pdfbox</groupId> <groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId> <artifactId>pdfbox</artifactId>
<version>3.0.6</version> <version>3.0.7</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>commons-logging</groupId> <groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId> <artifactId>commons-logging</artifactId>
<version>1.3.5</version> <version>1.3.6</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.xerial</groupId> <groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId> <artifactId>sqlite-jdbc</artifactId>
<version>3.51.2.0</version> <version>3.53.1.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
</dependencies> </dependencies>
@@ -92,7 +92,7 @@
<!-- Usage: mvn clean javafx:run --> <!-- Usage: mvn clean javafx:run -->
<id>default-cli</id> <id>default-cli</id>
<configuration> <configuration>
<mainClass>fi.lpam.ruokamanageri.Main</mainClass> <mainClass>fi.lpam.Main</mainClass>
</configuration> </configuration>
</execution> </execution>
</executions> </executions>
@@ -114,7 +114,7 @@
<transformers> <transformers>
<transformer implementation= <transformer implementation=
"org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> "org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>fi.lpam.ruokamanageri.Main</mainClass> <mainClass>fi.lpam.Main</mainClass>
</transformer> </transformer>
</transformers> </transformers>
</configuration> </configuration>
@@ -1,9 +1,9 @@
package fi.lpam.ruokamanageri; package fi.lpam;
import fi.lpam.ruokamanageri.dataluokat.Tietokanta; import fi.lpam.dataluokat.Tietokanta;
import fi.lpam.ruokamanageri.gui.Asiakashallinta; import fi.lpam.gui.Asiakashallinta;
import fi.lpam.ruokamanageri.gui.Kierroshallinta; import fi.lpam.gui.Kierroshallinta;
import fi.lpam.ruokamanageri.gui.KuljetusRaportit; import fi.lpam.gui.KuljetusRaportit;
import fi.lpam.ruokamanageri.gui.KuljetusListat; import fi.lpam.gui.KuljetusListat;
import javafx.application.Application; import javafx.application.Application;
import javafx.geometry.Side; import javafx.geometry.Side;
import javafx.scene.Scene; import javafx.scene.Scene;
@@ -1,4 +1,4 @@
package fi.lpam.ruokamanageri; package fi.lpam;
import java.io.IOException; import java.io.IOException;
import java.util.Properties; import java.util.Properties;
@@ -1,6 +1,6 @@
package fi.lpam.ruokamanageri.dataluokat; package fi.lpam.dataluokat;
import fi.lpam.ruokamanageri.gui.virheDialogit.SiirtoVirhe; import fi.lpam.gui.virheDialogit.SiirtoVirhe;
import java.sql.*; import java.sql.*;
import java.time.DayOfWeek; import java.time.DayOfWeek;
@@ -1,6 +1,6 @@
package fi.lpam.ruokamanageri.dataluokat; package fi.lpam.dataluokat;
import fi.lpam.ruokamanageri.gui.virheDialogit.SiirtoVirhe; import fi.lpam.gui.virheDialogit.SiirtoVirhe;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
@@ -1,6 +1,6 @@
package fi.lpam.ruokamanageri.dataluokat; package fi.lpam.dataluokat;
import fi.lpam.ruokamanageri.gui.virheDialogit.SiirtoVirhe; import fi.lpam.gui.virheDialogit.SiirtoVirhe;
import java.sql.*; import java.sql.*;
import java.time.LocalDate; import java.time.LocalDate;
@@ -1,6 +1,6 @@
package fi.lpam.ruokamanageri.dataluokat; package fi.lpam.dataluokat;
import fi.lpam.ruokamanageri.gui.virheDialogit.SiirtoVirhe; import fi.lpam.gui.virheDialogit.SiirtoVirhe;
import java.sql.*; import java.sql.*;
import java.time.LocalDate; import java.time.LocalDate;
@@ -1,8 +1,8 @@
package fi.lpam.ruokamanageri.dataluokat; package fi.lpam.dataluokat;
import fi.lpam.ruokamanageri.gui.virheDialogit.SiirtoVirhe; import fi.lpam.gui.virheDialogit.SiirtoVirhe;
import fi.lpam.ruokamanageri.Main; import fi.lpam.Main;
import org.apache.commons.lang3.SystemUtils; import org.apache.commons.lang3.SystemUtils;
import java.io.*; import java.io.*;
@@ -1,4 +1,4 @@
package fi.lpam.ruokamanageri.dataluokat; package fi.lpam.dataluokat;
public interface TietokantaOlio { public interface TietokantaOlio {
@@ -1,10 +1,10 @@
package fi.lpam.ruokamanageri.gui; package fi.lpam.gui;
import fi.lpam.ruokamanageri.dataluokat.Asiakas; import fi.lpam.dataluokat.Asiakas;
import fi.lpam.ruokamanageri.gui.elementit.IntegerSpinner; import fi.lpam.gui.elementit.IntegerSpinner;
import fi.lpam.ruokamanageri.gui.elementit.TabPohja; import fi.lpam.gui.elementit.TabPohja;
import fi.lpam.ruokamanageri.Main; import fi.lpam.Main;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.geometry.Side; import javafx.geometry.Side;
@@ -30,7 +30,12 @@ public class AsiakasIkkuna extends Stage {
*/ */
public AsiakasIkkuna(Asiakas käsiteltäväAsiakas) { public AsiakasIkkuna(Asiakas käsiteltäväAsiakas) {
this.käsiteltäväAsiakas = käsiteltäväAsiakas; this.käsiteltäväAsiakas = käsiteltäväAsiakas;
this.setTitle("Asiakasikkuna"); if (käsiteltäväAsiakas.getNimi() != null) {
this.setTitle(käsiteltäväAsiakas.getNimi());
}
else {
this.setTitle("Uusi asiakas");
}
TabPane tabPane = new TabPane(); TabPane tabPane = new TabPane();
tabPane.setSide(Side.LEFT); tabPane.setSide(Side.LEFT);
@@ -1,8 +1,8 @@
package fi.lpam.ruokamanageri.gui; package fi.lpam.gui;
import fi.lpam.ruokamanageri.dataluokat.Asiakas; import fi.lpam.dataluokat.Asiakas;
import fi.lpam.ruokamanageri.gui.elementit.MaaraTableColumn; import fi.lpam.gui.elementit.MaaraTableColumn;
import fi.lpam.ruokamanageri.gui.elementit.TabPohja; import fi.lpam.gui.elementit.TabPohja;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.scene.control.*; import javafx.scene.control.*;
import javafx.scene.control.Button; import javafx.scene.control.Button;
@@ -13,7 +13,6 @@ import javafx.scene.input.MouseEvent;
import javafx.scene.layout.*; import javafx.scene.layout.*;
import java.awt.*; import java.awt.*;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
@@ -83,11 +82,11 @@ public class Asiakashallinta extends TabPohja {
}); });
root.setCenter(tvAsiakkaat); root.setCenter(tvAsiakkaat);
TableColumn<Asiakas, String> tcId = new TableColumn<>("Id");
tcId.setCellValueFactory(new PropertyValueFactory<>("id"));
TableColumn<Asiakas, String> tcNimi = new TableColumn<>("Nimi"); TableColumn<Asiakas, String> tcNimi = new TableColumn<>("Nimi");
tcNimi.setMinWidth(180);
tcNimi.setCellValueFactory(new PropertyValueFactory<>("nimi")); tcNimi.setCellValueFactory(new PropertyValueFactory<>("nimi"));
TableColumn<Asiakas, String> tcOsoite = new TableColumn<>("Osoite"); TableColumn<Asiakas, String> tcOsoite = new TableColumn<>("Osoite");
tcOsoite.setMinWidth(250);
tcOsoite.setCellValueFactory(new PropertyValueFactory<>("osoite")); tcOsoite.setCellValueFactory(new PropertyValueFactory<>("osoite"));
int minWidth = 40; int minWidth = 40;
@@ -109,42 +108,42 @@ public class Asiakashallinta extends TabPohja {
tcKuljetuspäivät.getColumns().addAll(tcMaanantaiKpl, tcTiistaiKpl, tcKeskiviikkoKpl, tcTorstaiKpl, tcPerjantaiKpl, tcLauantaiKpl, tcSunnuntaiKpl); tcKuljetuspäivät.getColumns().addAll(tcMaanantaiKpl, tcTiistaiKpl, tcKeskiviikkoKpl, tcTorstaiKpl, tcPerjantaiKpl, tcLauantaiKpl, tcSunnuntaiKpl);
TableColumn<Asiakas, MaaraTableColumn<Asiakas, Integer>> tcKuljetusmäärät = new TableColumn<>("Määrät per kuljetus"); TableColumn<Asiakas, MaaraTableColumn<Asiakas, Integer>> tcKuljetusmäärät = new TableColumn<>("Määrät per kuljetus");
MaaraTableColumn<Asiakas, Integer> tcSalaatit = new MaaraTableColumn<>("Salaatit", 80); MaaraTableColumn<Asiakas, Integer> tcSalaatit = new MaaraTableColumn<>("Salaatit", minWidth, 150);
tcSalaatit.setCellValueFactory(new PropertyValueFactory<>("salaatit")); tcSalaatit.setCellValueFactory(new PropertyValueFactory<>("salaatit"));
MaaraTableColumn<Asiakas, Integer> tcPääruoat = new MaaraTableColumn<>("Pääruoat", 80); MaaraTableColumn<Asiakas, Integer> tcPääruoat = new MaaraTableColumn<>("Pääruoat", minWidth, 150);
tcPääruoat.setCellValueFactory(new PropertyValueFactory<>("pääruoat")); tcPääruoat.setCellValueFactory(new PropertyValueFactory<>("pääruoat"));
MaaraTableColumn<Asiakas, Integer> tcJälkiruoat = new MaaraTableColumn<>("Jälkiruoat", 80); MaaraTableColumn<Asiakas, Integer> tcJälkiruoat = new MaaraTableColumn<>("Jälkiruoat", minWidth, 150);
tcJälkiruoat.setCellValueFactory(new PropertyValueFactory<>("jälkiruoat")); tcJälkiruoat.setCellValueFactory(new PropertyValueFactory<>("jälkiruoat"));
tcKuljetusmäärät.getColumns().addAll(tcSalaatit, tcPääruoat, tcJälkiruoat); tcKuljetusmäärät.getColumns().addAll(tcSalaatit, tcPääruoat, tcJälkiruoat);
TableColumn<Asiakas, String> tcErityisruokavalio = new TableColumn<>("Ruokarajoitteet"); TableColumn<Asiakas, String> tcErityisruokavalio = new TableColumn<>("Ruokarajoitteet");
tcErityisruokavalio.setMinWidth(150); // tcErityisruokavalio.setMinWidth(150);
tcErityisruokavalio.setCellValueFactory(new PropertyValueFactory<>("erityisruokavalio")); tcErityisruokavalio.setCellValueFactory(new PropertyValueFactory<>("erityisruokavalio"));
TableColumn<Asiakas, String> tcAvainTieto = new TableColumn<>("Avaintieto"); TableColumn<Asiakas, String> tcAvainTieto = new TableColumn<>("Avaintieto");
tcAvainTieto.setMinWidth(150); // tcAvainTieto.setMinWidth(150);
tcAvainTieto.setCellValueFactory(new PropertyValueFactory<>("avainTieto")); tcAvainTieto.setCellValueFactory(new PropertyValueFactory<>("avainTieto"));
TableColumn<Asiakas, String> tcLisätiedot = new TableColumn<>("Lisätieto kuljetukselle"); TableColumn<Asiakas, String> tcLisätiedot = new TableColumn<>("Lisätieto kuljetukselle");
tcLisätiedot.setMinWidth(250); // tcLisätiedot.setMinWidth(250);
tcLisätiedot.setCellValueFactory(new PropertyValueFactory<>("lisätiedot")); tcLisätiedot.setCellValueFactory(new PropertyValueFactory<>("lisätiedot"));
TableColumn<Asiakas, String> tcYhteyshenkilönNimi = new TableColumn<>("Yhteyshenkilö"); TableColumn<Asiakas, String> tcYhteyshenkilönNimi = new TableColumn<>("Yhteyshenkilö");
tcYhteyshenkilönNimi.setMinWidth(250); // tcYhteyshenkilönNimi.setMinWidth(250);
tcYhteyshenkilönNimi.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönNimi")); tcYhteyshenkilönNimi.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönNimi"));
TableColumn<Asiakas, String> tcLaskutusOsoite = new TableColumn<>("Laskutusosoite"); TableColumn<Asiakas, String> tcLaskutusOsoite = new TableColumn<>("Laskutusosoite");
tcLaskutusOsoite.setMinWidth(250); // tcLaskutusOsoite.setMinWidth(250);
tcLaskutusOsoite.setCellValueFactory(new PropertyValueFactory<>("laskutusOsoite")); tcLaskutusOsoite.setCellValueFactory(new PropertyValueFactory<>("laskutusOsoite"));
TableColumn<Asiakas, String> tcYhteyshenkilönPuhelinnumero = new TableColumn<>("Yhteyshenkilön puhelinnumero"); TableColumn<Asiakas, String> tcYhteyshenkilönPuhelinnumero = new TableColumn<>("Yhteyshenkilön puhelinnumero");
tcYhteyshenkilönPuhelinnumero.setMinWidth(250); // tcYhteyshenkilönPuhelinnumero.setMinWidth(250);
tcYhteyshenkilönPuhelinnumero.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönPuhelinnumero")); tcYhteyshenkilönPuhelinnumero.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönPuhelinnumero"));
TableColumn<Asiakas, String> tcYhteyshenkilönSähköposti = new TableColumn<>("Yhteyshenkilön sähköposti"); TableColumn<Asiakas, String> tcYhteyshenkilönSähköposti = new TableColumn<>("Yhteyshenkilön sähköposti");
tcYhteyshenkilönSähköposti.setMinWidth(250); // tcYhteyshenkilönSähköposti.setMinWidth(250);
tcYhteyshenkilönSähköposti.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönSähköposti")); tcYhteyshenkilönSähköposti.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönSähköposti"));
tvAsiakkaat.getColumns().addAll(tcNimi, tcOsoite, tcKuljetuspäivät, tcKuljetusmäärät, tcErityisruokavalio, tcAvainTieto, tcLisätiedot, tcYhteyshenkilönNimi, tcLaskutusOsoite, tcYhteyshenkilönPuhelinnumero, tcYhteyshenkilönSähköposti); tvAsiakkaat.getColumns().addAll(tcId, tcNimi, tcOsoite, tcKuljetuspäivät, tcKuljetusmäärät, tcErityisruokavalio, tcAvainTieto, tcLisätiedot, tcYhteyshenkilönNimi, tcLaskutusOsoite, tcYhteyshenkilönPuhelinnumero, tcYhteyshenkilönSähköposti);
for (TableColumn<Asiakas, ?> column : tvAsiakkaat.getColumns()) { for (TableColumn<Asiakas, ?> column : tvAsiakkaat.getColumns()) {
column.setEditable(false); column.setEditable(false);
column.setReorderable(false); column.setReorderable(false);
column.setResizable(false); column.setResizable(true);
column.setStyle("-fx-alignment: CENTER; -fx-font-size: 16px;"); column.setStyle("-fx-alignment: CENTER; -fx-font-size: 16px;");
} }
@@ -1,11 +1,11 @@
package fi.lpam.ruokamanageri.gui; package fi.lpam.gui;
import com.dlsc.gemsfx.MultiColumnListView; import com.dlsc.gemsfx.MultiColumnListView;
import fi.lpam.ruokamanageri.dataluokat.Asiakas; import fi.lpam.dataluokat.Asiakas;
import fi.lpam.ruokamanageri.dataluokat.Kierros; import fi.lpam.dataluokat.Kierros;
import fi.lpam.ruokamanageri.gui.elementit.AsiakasListCell; import fi.lpam.gui.elementit.AsiakasListCell;
import fi.lpam.ruokamanageri.gui.elementit.TabPohja; import fi.lpam.gui.elementit.TabPohja;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
@@ -47,7 +47,10 @@ public class Kierroshallinta extends TabPohja {
yläpalkki.setRight(yläpalkinNapit); yläpalkki.setRight(yläpalkinNapit);
Button lisääKierros = new Button("Lisää uusi kierros"); Button lisääKierros = new Button("Lisää uusi kierros");
lisääKierros.setOnAction(_ -> lisaaKierros()); lisääKierros.setOnAction(_ -> {
int uudenKierroksenNumero = mclv.getColumns().size();
lisaaKierros(new Kierros(uudenKierroksenNumero, FXCollections.observableArrayList(new ArrayList<>())));
});
lisääKierros.setFont(TabPohja.buttonFont); lisääKierros.setFont(TabPohja.buttonFont);
yläpalkinNapit.getChildren().add(lisääKierros); yläpalkinNapit.getChildren().add(lisääKierros);
@@ -67,14 +70,11 @@ public class Kierroshallinta extends TabPohja {
HashSet<Integer> kierroksellaOlevatAsiakasIDt = new HashSet<>(); HashSet<Integer> kierroksellaOlevatAsiakasIDt = new HashSet<>();
if (!kierrokset.isEmpty()) { if (!kierrokset.isEmpty()) {
for (Kierros k : kierrokset) { for (Kierros kierros : kierrokset) {
MultiColumnListView.ListViewColumn<Asiakas> sarake = new MultiColumnListView.ListViewColumn<>(); lisaaKierros(kierros);
sarake.setHeader(new Label("Kierros " + k.getKierrosNumero())); for (Asiakas asiakas : kierros.getAsiakkaat()) {
sarake.setItems(k.getAsiakkaat());
for (Asiakas asiakas : k.getAsiakkaat()) {
kierroksellaOlevatAsiakasIDt.add(asiakas.getId()); kierroksellaOlevatAsiakasIDt.add(asiakas.getId());
} }
mclv.getColumns().add(sarake);
} }
} }
@@ -89,14 +89,12 @@ public class Kierroshallinta extends TabPohja {
mclv.getColumns().add(colEiKierroksella); mclv.getColumns().add(colEiKierroksella);
} }
private void lisaaKierros() { private void lisaaKierros(Kierros kierros) {
int uudenKierroksenNumero = mclv.getColumns().size(); if (kierros.getId() == -1) kierrokset.add(kierros);
Kierros lisättäväKierros = new Kierros(uudenKierroksenNumero, FXCollections.observableArrayList(new ArrayList<>()));
kierrokset.add(lisättäväKierros);
MultiColumnListView.ListViewColumn<Asiakas> uusiSarake = new MultiColumnListView.ListViewColumn<>(); MultiColumnListView.ListViewColumn<Asiakas> uusiSarake = new MultiColumnListView.ListViewColumn<>();
uusiSarake.setHeader(new Label("Kierros " + uudenKierroksenNumero)); uusiSarake.setHeader(new Label("Kierros " + kierros.getKierrosNumero()));
uusiSarake.setItems(lisättäväKierros.getAsiakkaat()); uusiSarake.setItems(kierros.getAsiakkaat());
mclv.getColumns().add(uudenKierroksenNumero-1, uusiSarake); mclv.getColumns().add(kierros.getKierrosNumero()-1, uusiSarake);
} }
private void tallennaKierrokset() { private void tallennaKierrokset() {
@@ -1,13 +1,13 @@
package fi.lpam.ruokamanageri.gui; package fi.lpam.gui;
import fi.lpam.ruokamanageri.dataluokat.Asiakas; import fi.lpam.dataluokat.Asiakas;
import fi.lpam.ruokamanageri.dataluokat.Kierros; import fi.lpam.dataluokat.Kierros;
import fi.lpam.ruokamanageri.dataluokat.Kuljetus; import fi.lpam.dataluokat.Kuljetus;
import fi.lpam.ruokamanageri.gui.tableCell.IntegerFieldTableCellFactory; import fi.lpam.gui.tableCell.IntegerFieldTableCellFactory;
import fi.lpam.ruokamanageri.gui.tableCell.KuljetaTableCell; import fi.lpam.gui.tableCell.KuljetaTableCell;
import fi.lpam.ruokamanageri.tulostajat.KuljetusListaTulostaja; import fi.lpam.tulostajat.KuljetusListaTulostaja;
import fi.lpam.ruokamanageri.gui.elementit.MaaraTableColumn; import fi.lpam.gui.elementit.MaaraTableColumn;
import fi.lpam.ruokamanageri.gui.elementit.TabPohja; import fi.lpam.gui.elementit.TabPohja;
import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleBooleanProperty;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
@@ -1,9 +1,9 @@
package fi.lpam.ruokamanageri.gui; package fi.lpam.gui;
import fi.lpam.ruokamanageri.dataluokat.RaporttiRivi; import fi.lpam.dataluokat.RaporttiRivi;
import fi.lpam.ruokamanageri.tulostajat.KuljetusRaporttiTulostaja; import fi.lpam.tulostajat.KuljetusRaporttiTulostaja;
import fi.lpam.ruokamanageri.gui.tableCell.PaivamaaraTableCell; import fi.lpam.gui.tableCell.PaivamaaraTableCell;
import fi.lpam.ruokamanageri.gui.elementit.TabPohja; import fi.lpam.gui.elementit.TabPohja;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.control.*; import javafx.scene.control.*;
@@ -1,9 +1,10 @@
package fi.lpam.ruokamanageri.gui.elementit; package fi.lpam.gui.elementit;
import com.dlsc.gemsfx.MultiColumnListView; import com.dlsc.gemsfx.MultiColumnListView;
import fi.lpam.ruokamanageri.dataluokat.Asiakas; import fi.lpam.dataluokat.Asiakas;
import javafx.beans.property.BooleanProperty; import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.SimpleBooleanProperty;
import javafx.geometry.Pos;
import javafx.scene.Node; import javafx.scene.Node;
import javafx.scene.control.ContentDisplay; import javafx.scene.control.ContentDisplay;
import javafx.scene.control.Label; import javafx.scene.control.Label;
@@ -14,12 +15,10 @@ import javafx.scene.layout.VBox;
public class AsiakasListCell extends MultiColumnListView.ColumnListCell<Asiakas> { public class AsiakasListCell extends MultiColumnListView.ColumnListCell<Asiakas> {
private final StackPane wrapper; private final StackPane wrapper;
public AsiakasListCell(MultiColumnListView multiColumnListView) { public AsiakasListCell(MultiColumnListView<Asiakas> multiColumnListView) {
//noinspection unchecked
super(multiColumnListView); super(multiColumnListView);
this.setHeight(150); this.setMinHeight(60);
this.setPrefHeight(50); this.setMaxHeight(60);
VBox content = new VBox(); VBox content = new VBox();
content.visibleProperty().bind(placeholder.not().and(emptyProperty().not())); content.visibleProperty().bind(placeholder.not().and(emptyProperty().not()));
@@ -30,9 +29,11 @@ public class AsiakasListCell extends MultiColumnListView.ColumnListCell<Asiakas>
contentPlaceholder.managedProperty().bind(placeholder); contentPlaceholder.managedProperty().bind(placeholder);
Label label = new Label(); Label label = new Label();
label.setFont(TabPohja.tekstiFont);
label.textProperty().bind(textProperty()); label.textProperty().bind(textProperty());
wrapper = new StackPane(content, contentPlaceholder, label); wrapper = new StackPane(content, contentPlaceholder, label);
wrapper.setAlignment(Pos.CENTER_LEFT);
setGraphic(wrapper); setGraphic(wrapper);
setContentDisplay(ContentDisplay.GRAPHIC_ONLY); setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
} }
@@ -59,7 +60,7 @@ public class AsiakasListCell extends MultiColumnListView.ColumnListCell<Asiakas>
placeholder.set(true); placeholder.set(true);
setText(""); setText("");
} else { } else {
setText(asiakas.getNimi() + ": " + asiakas.getOsoite()); setText(asiakas.getNimi() + "\n" + asiakas.getOsoite());
} }
} else { } else {
setText(""); setText("");
@@ -1,4 +1,4 @@
package fi.lpam.ruokamanageri.gui.elementit; package fi.lpam.gui.elementit;
import javafx.scene.control.Spinner; import javafx.scene.control.Spinner;
import javafx.scene.control.SpinnerValueFactory; import javafx.scene.control.SpinnerValueFactory;
@@ -1,21 +1,19 @@
package fi.lpam.ruokamanageri.gui.elementit; package fi.lpam.gui.elementit;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
public class MaaraTableColumn<Asiakas, Integer> extends TableColumn<Asiakas, Integer> { public class MaaraTableColumn<Asiakas, Integer> extends TableColumn<Asiakas, Integer> {
public MaaraTableColumn(String columnLabel, int width) {
super(columnLabel);
this.setResizable(false);
this.setReorderable(false);
this.setMinWidth(width);
this.setMaxWidth(width);
}
public MaaraTableColumn(String columnLabel, int minWidth, int maxWidth) { public MaaraTableColumn(String columnLabel, int minWidth, int maxWidth) {
super(columnLabel); super(columnLabel);
this.setResizable(false); this.setResizable(true);
this.setReorderable(false); this.setReorderable(false);
this.setMinWidth(minWidth); this.setMinWidth(minWidth);
this.setMaxWidth(maxWidth); this.setMaxWidth(maxWidth);
this.setStyle("-fx-alignment: CENTER; -fx-font-size: 16px;");
}
public MaaraTableColumn(String columnLabel, int width) {
this(columnLabel, width, width);
this.setResizable(false);
} }
} }
@@ -1,4 +1,4 @@
package fi.lpam.ruokamanageri.gui.elementit; package fi.lpam.gui.elementit;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.scene.layout.*; import javafx.scene.layout.*;
@@ -1,4 +1,4 @@
package fi.lpam.ruokamanageri.gui.tableCell; package fi.lpam.gui.tableCell;
import javafx.scene.control.TableCell; import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
@@ -1,8 +1,8 @@
package fi.lpam.ruokamanageri.gui.tableCell; package fi.lpam.gui.tableCell;
import fi.lpam.ruokamanageri.dataluokat.Asiakas; import fi.lpam.dataluokat.Asiakas;
import fi.lpam.ruokamanageri.dataluokat.Kuljetus; import fi.lpam.dataluokat.Kuljetus;
import fi.lpam.ruokamanageri.gui.KuljetusListat; import fi.lpam.gui.KuljetusListat;
import javafx.geometry.Insets; import javafx.geometry.Insets;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.control.ContentDisplay; import javafx.scene.control.ContentDisplay;
@@ -1,6 +1,6 @@
package fi.lpam.ruokamanageri.gui.tableCell; package fi.lpam.gui.tableCell;
import fi.lpam.ruokamanageri.dataluokat.RaporttiRivi; import fi.lpam.dataluokat.RaporttiRivi;
import javafx.scene.control.TableCell; import javafx.scene.control.TableCell;
import java.time.LocalDate; import java.time.LocalDate;
@@ -1,4 +1,4 @@
package fi.lpam.ruokamanageri.gui.virheDialogit; package fi.lpam.gui.virheDialogit;
public class SiirtoVirhe extends TietokantaVirhe{ public class SiirtoVirhe extends TietokantaVirhe{
public SiirtoVirhe(Exception e){ public SiirtoVirhe(Exception e){
@@ -1,6 +1,6 @@
package fi.lpam.ruokamanageri.gui.virheDialogit; package fi.lpam.gui.virheDialogit;
import fi.lpam.ruokamanageri.Main; import fi.lpam.Main;
import javafx.scene.control.Alert; import javafx.scene.control.Alert;
import javafx.scene.image.Image; import javafx.scene.image.Image;
import javafx.scene.image.ImageView; import javafx.scene.image.ImageView;
@@ -1,6 +1,6 @@
package fi.lpam.ruokamanageri.tulostajat; package fi.lpam.tulostajat;
import fi.lpam.ruokamanageri.dataluokat.Kuljetus; import fi.lpam.dataluokat.Kuljetus;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import java.io.IOException; import java.io.IOException;
@@ -1,6 +1,6 @@
package fi.lpam.ruokamanageri.tulostajat; package fi.lpam.tulostajat;
import fi.lpam.ruokamanageri.dataluokat.RaporttiRivi; import fi.lpam.dataluokat.RaporttiRivi;
import java.io.IOException; import java.io.IOException;
import java.time.LocalDate; import java.time.LocalDate;
@@ -1,6 +1,6 @@
package fi.lpam.ruokamanageri.tulostajat; package fi.lpam.tulostajat;
import fi.lpam.ruokamanageri.gui.virheDialogit.SiirtoVirhe; import fi.lpam.gui.virheDialogit.SiirtoVirhe;
import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.PDPageContentStream;
+2 -2
View File
@@ -9,6 +9,6 @@ module fi.lpam.ruokamanageri {
requires org.apache.pdfbox; requires org.apache.pdfbox;
requires org.apache.commons.lang3; requires org.apache.commons.lang3;
opens fi.lpam.ruokamanageri.dataluokat to javafx.base; opens fi.lpam.dataluokat to javafx.base;
exports fi.lpam.ruokamanageri; exports fi.lpam;
} }
-2
View File
@@ -1,2 +0,0 @@
Manifest-Version: 1.0
Main-Class: fi.lpam.ruokamanageri.Main