Compare commits
13 Commits
3.0.0
...
68eb4e3be4
| Author | SHA1 | Date | |
|---|---|---|---|
| 68eb4e3be4 | |||
| a29fb6d0f5 | |||
| c52dbcd716 | |||
| fe078f9fb8 | |||
| c2942a7455 | |||
| 69243d9cb2 | |||
| 1d4056bc99 | |||
| c676ae8400 | |||
| deb2f49fb6 | |||
| ded6accd29 | |||
| f9e868918c | |||
| f76d4413d4 | |||
| 65b4a7ef9b |
Generated
+2
-2
@@ -1,11 +1,11 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<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" />
|
||||
<option name="PROGRAM_PARAMETERS" value="DEV" />
|
||||
<extension name="coverage">
|
||||
<pattern>
|
||||
<option name="PATTERN" value="fi.lpam.ruokamanageri.*" />
|
||||
<option name="PATTERN" value="fi.lpam.*" />
|
||||
<option name="ENABLED" value="true" />
|
||||
</pattern>
|
||||
</extension>
|
||||
|
||||
Generated
-6
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="SqlDialectMappings">
|
||||
<file url="PROJECT" dialect="SQLite" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -1,6 +1,6 @@
|
||||
# [LICENSE](LICENSE)
|
||||
|
||||
# [Versiohistoria](CHANGELOG.md)
|
||||
# [Versiohistoria](src/main/resources/CHANGELOG.md)
|
||||
|
||||
# Kuvaus
|
||||
Pienen kotiateriapalvelun käyttöön rakennettu ohjelma sisältäen seuraavat ominaisuudet
|
||||
@@ -9,19 +9,18 @@ Pienen kotiateriapalvelun käyttöön rakennettu ohjelma sisältäen seuraavat o
|
||||
- Kuljetuslistojen luominen
|
||||
- Kuljetettujen määrien raportointi
|
||||
|
||||
## Toteutus
|
||||
# Toteutus
|
||||
- SQLite tietokanta
|
||||
- JavaFX GUI
|
||||
- Java 25
|
||||
- Maven
|
||||
|
||||
## Käyttöönotto
|
||||
# Käyttöönotto
|
||||
- Vaatimukset
|
||||
- Windows
|
||||
- Java 25+
|
||||
- Usean tietokoneen käyttöön OneDrive -tili (samanaikaisuus ei tuettu)
|
||||
- Lataa haluamasi julkaisuversio lähdekoodista
|
||||
- Maven `package` komennolla projektista luodaan .jar tiedosto
|
||||
- .jar tiedosto sisältää kaikki riippuvuudet
|
||||
- Tietokantatiedosto asuu osoitteessa `$KOTIKANSIO/OneDrive/Kuljetusruokasovellus/tietokanta.db`
|
||||
- Lataa haluamasi ohjelmaversio julkaisuista
|
||||
- Aja .JAR tiedosto
|
||||
- Tietokanta sijaitsee osoitteessa `~/OneDrive/Kuljetusruokasovellus/tietokanta.db`
|
||||
- Ohjelma luo tietokannan, mikäli sitä ei löydy.
|
||||
@@ -3,7 +3,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>fi.lpam.ruokamanageri</groupId>
|
||||
<artifactId>Ruokamanageri</artifactId>
|
||||
<version>3.0.0</version>
|
||||
<version>3.0.1</version>
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.source>25</maven.compiler.source>
|
||||
@@ -43,26 +43,31 @@
|
||||
<dependency>
|
||||
<groupId>com.dlsc.gemsfx</groupId>
|
||||
<artifactId>gemsfx</artifactId>
|
||||
<version>3.10.1</version>
|
||||
<version>4.0.5</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.pdfbox</groupId>
|
||||
<artifactId>pdfbox</artifactId>
|
||||
<version>3.0.6</version>
|
||||
<version>3.0.7</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-logging</groupId>
|
||||
<artifactId>commons-logging</artifactId>
|
||||
<version>1.3.5</version>
|
||||
<version>1.3.6</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.xerial</groupId>
|
||||
<artifactId>sqlite-jdbc</artifactId>
|
||||
<version>3.51.2.0</version>
|
||||
<version>3.53.1.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>one.jpro.platform</groupId>
|
||||
<artifactId>jpro-mdfx</artifactId>
|
||||
<version>0.6.2</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
@@ -92,7 +97,7 @@
|
||||
<!-- Usage: mvn clean javafx:run -->
|
||||
<id>default-cli</id>
|
||||
<configuration>
|
||||
<mainClass>fi.lpam.ruokamanageri.Main</mainClass>
|
||||
<mainClass>fi.lpam.Main</mainClass>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
@@ -114,7 +119,7 @@
|
||||
<transformers>
|
||||
<transformer implementation=
|
||||
"org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
|
||||
<mainClass>fi.lpam.ruokamanageri.Main</mainClass>
|
||||
<mainClass>fi.lpam.Main</mainClass>
|
||||
</transformer>
|
||||
</transformers>
|
||||
</configuration>
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
package fi.lpam.ruokamanageri;
|
||||
import fi.lpam.ruokamanageri.dataluokat.Tietokanta;
|
||||
import fi.lpam.ruokamanageri.gui.Asiakashallinta;
|
||||
import fi.lpam.ruokamanageri.gui.Kierroshallinta;
|
||||
import fi.lpam.ruokamanageri.gui.KuljetusRaportit;
|
||||
import fi.lpam.ruokamanageri.gui.KuljetusListat;
|
||||
package fi.lpam;
|
||||
import fi.lpam.dataluokat.Tietokanta;
|
||||
import fi.lpam.gui.Asiakashallinta;
|
||||
import fi.lpam.gui.Kierroshallinta;
|
||||
import fi.lpam.gui.KuljetusRaportit;
|
||||
import fi.lpam.gui.KuljetusListat;
|
||||
import fi.lpam.gui.elementit.MuutosIlmoitus;
|
||||
import javafx.application.Application;
|
||||
import javafx.geometry.Side;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.control.Alert;
|
||||
import javafx.scene.control.Tab;
|
||||
import javafx.scene.control.TabPane;
|
||||
import javafx.scene.image.Image;
|
||||
@@ -63,5 +65,7 @@ public class App extends Application {
|
||||
primaryStage.setMaximized(true);
|
||||
primaryStage.show();
|
||||
primaryStage.getIcons().add(new Image(Objects.requireNonNull(Main.class.getClassLoader().getResourceAsStream("kuljetusruokalaatikko.jpg"))));
|
||||
|
||||
if (!Main.properties.getProperty("version").equals(Main.properties.getProperty("viimeisinVersio"))) new MuutosIlmoitus();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package fi.lpam;
|
||||
|
||||
import org.apache.commons.lang3.SystemUtils;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Properties;
|
||||
|
||||
public class Main {
|
||||
public static boolean dev;
|
||||
public static Properties properties;
|
||||
|
||||
public static final File asetustiedosto = Path.of(SystemUtils.getUserHome().getAbsolutePath(), "OneDrive", "Kuljetusruokasovellus", "asetukset.properties").toFile();
|
||||
|
||||
static void main(String[] args) {
|
||||
//noinspection RedundantIfStatement
|
||||
if (args.length > 0) {
|
||||
dev = true;
|
||||
} else {
|
||||
dev = false;
|
||||
}
|
||||
|
||||
try {
|
||||
Properties defaults = new Properties();
|
||||
defaults.load(Main.class.getClassLoader().getResourceAsStream("defaults.properties"));
|
||||
properties = new Properties(defaults);
|
||||
properties.load(new FileInputStream(asetustiedosto));
|
||||
}
|
||||
catch (IOException e) {
|
||||
//noinspection CallToPrintStackTrace
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
System.out.println(properties.getProperty("version"));
|
||||
System.out.println(properties.getProperty("viimeisinVersio"));
|
||||
|
||||
App.main();
|
||||
|
||||
try (OutputStream os = new FileOutputStream(asetustiedosto)) {
|
||||
properties.store(os, "");
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package fi.lpam.dataluokat;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.Properties;
|
||||
|
||||
public class Asetukset extends Properties {
|
||||
private static Asetukset asetukset;
|
||||
|
||||
private Asetukset() {
|
||||
super();
|
||||
asetukset = this;
|
||||
System.out.println("Luotu asetukset");
|
||||
try (InputStream is = new FileInputStream("defaults.properties")) {
|
||||
asetukset.load(is);
|
||||
asetukset.forEach((k, v) -> {
|
||||
System.out.println(k + ": " + v);
|
||||
});
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public Properties get() {
|
||||
if (asetukset == null) {new Properties();}
|
||||
return asetukset;
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -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.time.DayOfWeek;
|
||||
+2
-2
@@ -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.ObservableList;
|
||||
|
||||
+2
-2
@@ -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.time.LocalDate;
|
||||
+2
-2
@@ -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.time.LocalDate;
|
||||
+9
-9
@@ -1,28 +1,28 @@
|
||||
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 java.io.*;
|
||||
import java.nio.file.Path;
|
||||
import java.sql.*;
|
||||
import java.util.Objects;
|
||||
|
||||
public class Tietokanta {
|
||||
private static String osoite;
|
||||
private static String dbPath = SystemUtils.getUserHome().getAbsolutePath() + "\\OneDrive\\Kuljetusruokasovellus\\tietokanta.db";
|
||||
private static File tietokantatiedosto = Path.of(SystemUtils.getUserHome().getAbsolutePath(), "OneDrive", "Kuljetusruokasovellus", "tietokanta.db").toFile();
|
||||
|
||||
public Tietokanta(boolean dev) {
|
||||
if (dev) dbPath = "testikanta.db";
|
||||
File file = new File(dbPath);
|
||||
if (dev) tietokantatiedosto = new File("testikanta.db");
|
||||
try {
|
||||
boolean _ = file.getParentFile().mkdirs();
|
||||
boolean _ = file.createNewFile();
|
||||
boolean _ = tietokantatiedosto.getParentFile().mkdirs();
|
||||
boolean _ = tietokantatiedosto.createNewFile();
|
||||
}
|
||||
catch (Exception _) {}
|
||||
|
||||
osoite = "jdbc:sqlite:" + file.getAbsolutePath();
|
||||
osoite = "jdbc:sqlite:" + tietokantatiedosto.getAbsolutePath();
|
||||
|
||||
|
||||
try (Connection conn = haeYhteys()) {
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package fi.lpam.ruokamanageri.dataluokat;
|
||||
package fi.lpam.dataluokat;
|
||||
|
||||
public interface TietokantaOlio {
|
||||
|
||||
+11
-6
@@ -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.ruokamanageri.gui.elementit.TabPohja;
|
||||
import fi.lpam.ruokamanageri.Main;
|
||||
import fi.lpam.gui.elementit.IntegerSpinner;
|
||||
import fi.lpam.gui.elementit.TabPohja;
|
||||
import fi.lpam.Main;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.geometry.Pos;
|
||||
import javafx.geometry.Side;
|
||||
@@ -30,7 +30,12 @@ public class AsiakasIkkuna extends Stage {
|
||||
*/
|
||||
public AsiakasIkkuna(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.setSide(Side.LEFT);
|
||||
+18
-19
@@ -1,8 +1,8 @@
|
||||
package fi.lpam.ruokamanageri.gui;
|
||||
package fi.lpam.gui;
|
||||
|
||||
import fi.lpam.ruokamanageri.dataluokat.Asiakas;
|
||||
import fi.lpam.ruokamanageri.gui.elementit.MaaraTableColumn;
|
||||
import fi.lpam.ruokamanageri.gui.elementit.TabPohja;
|
||||
import fi.lpam.dataluokat.Asiakas;
|
||||
import fi.lpam.gui.elementit.MaaraTableColumn;
|
||||
import fi.lpam.gui.elementit.TabPohja;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.scene.control.*;
|
||||
import javafx.scene.control.Button;
|
||||
@@ -13,7 +13,6 @@ import javafx.scene.input.MouseEvent;
|
||||
import javafx.scene.layout.*;
|
||||
|
||||
import java.awt.*;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
@@ -83,11 +82,11 @@ public class Asiakashallinta extends TabPohja {
|
||||
});
|
||||
root.setCenter(tvAsiakkaat);
|
||||
|
||||
TableColumn<Asiakas, String> tcId = new TableColumn<>("Id");
|
||||
tcId.setCellValueFactory(new PropertyValueFactory<>("id"));
|
||||
TableColumn<Asiakas, String> tcNimi = new TableColumn<>("Nimi");
|
||||
tcNimi.setMinWidth(180);
|
||||
tcNimi.setCellValueFactory(new PropertyValueFactory<>("nimi"));
|
||||
TableColumn<Asiakas, String> tcOsoite = new TableColumn<>("Osoite");
|
||||
tcOsoite.setMinWidth(250);
|
||||
tcOsoite.setCellValueFactory(new PropertyValueFactory<>("osoite"));
|
||||
|
||||
int minWidth = 40;
|
||||
@@ -109,42 +108,42 @@ public class Asiakashallinta extends TabPohja {
|
||||
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");
|
||||
MaaraTableColumn<Asiakas, Integer> tcSalaatit = new MaaraTableColumn<>("Salaatit", 80);
|
||||
MaaraTableColumn<Asiakas, Integer> tcSalaatit = new MaaraTableColumn<>("Salaatit", minWidth, 150);
|
||||
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"));
|
||||
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"));
|
||||
tcKuljetusmäärät.getColumns().addAll(tcSalaatit, tcPääruoat, tcJälkiruoat);
|
||||
|
||||
TableColumn<Asiakas, String> tcErityisruokavalio = new TableColumn<>("Ruokarajoitteet");
|
||||
tcErityisruokavalio.setMinWidth(150);
|
||||
// tcErityisruokavalio.setMinWidth(150);
|
||||
tcErityisruokavalio.setCellValueFactory(new PropertyValueFactory<>("erityisruokavalio"));
|
||||
TableColumn<Asiakas, String> tcAvainTieto = new TableColumn<>("Avaintieto");
|
||||
tcAvainTieto.setMinWidth(150);
|
||||
// tcAvainTieto.setMinWidth(150);
|
||||
tcAvainTieto.setCellValueFactory(new PropertyValueFactory<>("avainTieto"));
|
||||
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"));
|
||||
TableColumn<Asiakas, String> tcYhteyshenkilönNimi = new TableColumn<>("Yhteyshenkilö");
|
||||
tcYhteyshenkilönNimi.setMinWidth(250);
|
||||
// tcYhteyshenkilönNimi.setMinWidth(250);
|
||||
tcYhteyshenkilönNimi.setCellValueFactory(new PropertyValueFactory<>("yhteyshenkilönNimi"));
|
||||
TableColumn<Asiakas, String> tcLaskutusOsoite = new TableColumn<>("Laskutusosoite");
|
||||
tcLaskutusOsoite.setMinWidth(250);
|
||||
// tcLaskutusOsoite.setMinWidth(250);
|
||||
tcLaskutusOsoite.setCellValueFactory(new PropertyValueFactory<>("laskutusOsoite"));
|
||||
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"));
|
||||
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"));
|
||||
|
||||
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()) {
|
||||
column.setEditable(false);
|
||||
column.setReorderable(false);
|
||||
column.setResizable(false);
|
||||
column.setResizable(true);
|
||||
column.setStyle("-fx-alignment: CENTER; -fx-font-size: 16px;");
|
||||
|
||||
}
|
||||
+17
-19
@@ -1,11 +1,11 @@
|
||||
package fi.lpam.ruokamanageri.gui;
|
||||
package fi.lpam.gui;
|
||||
|
||||
import com.dlsc.gemsfx.MultiColumnListView;
|
||||
|
||||
import fi.lpam.ruokamanageri.dataluokat.Asiakas;
|
||||
import fi.lpam.ruokamanageri.dataluokat.Kierros;
|
||||
import fi.lpam.ruokamanageri.gui.elementit.AsiakasListCell;
|
||||
import fi.lpam.ruokamanageri.gui.elementit.TabPohja;
|
||||
import fi.lpam.dataluokat.Asiakas;
|
||||
import fi.lpam.dataluokat.Kierros;
|
||||
import fi.lpam.gui.elementit.AsiakasListCell;
|
||||
import fi.lpam.gui.elementit.TabPohja;
|
||||
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
@@ -47,7 +47,10 @@ public class Kierroshallinta extends TabPohja {
|
||||
yläpalkki.setRight(yläpalkinNapit);
|
||||
|
||||
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);
|
||||
yläpalkinNapit.getChildren().add(lisääKierros);
|
||||
|
||||
@@ -67,14 +70,11 @@ public class Kierroshallinta extends TabPohja {
|
||||
HashSet<Integer> kierroksellaOlevatAsiakasIDt = new HashSet<>();
|
||||
|
||||
if (!kierrokset.isEmpty()) {
|
||||
for (Kierros k : kierrokset) {
|
||||
MultiColumnListView.ListViewColumn<Asiakas> sarake = new MultiColumnListView.ListViewColumn<>();
|
||||
sarake.setHeader(new Label("Kierros " + k.getKierrosNumero()));
|
||||
sarake.setItems(k.getAsiakkaat());
|
||||
for (Asiakas asiakas : k.getAsiakkaat()) {
|
||||
for (Kierros kierros : kierrokset) {
|
||||
lisaaKierros(kierros);
|
||||
for (Asiakas asiakas : kierros.getAsiakkaat()) {
|
||||
kierroksellaOlevatAsiakasIDt.add(asiakas.getId());
|
||||
}
|
||||
mclv.getColumns().add(sarake);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,14 +89,12 @@ public class Kierroshallinta extends TabPohja {
|
||||
mclv.getColumns().add(colEiKierroksella);
|
||||
}
|
||||
|
||||
private void lisaaKierros() {
|
||||
int uudenKierroksenNumero = mclv.getColumns().size();
|
||||
Kierros lisättäväKierros = new Kierros(uudenKierroksenNumero, FXCollections.observableArrayList(new ArrayList<>()));
|
||||
kierrokset.add(lisättäväKierros);
|
||||
private void lisaaKierros(Kierros kierros) {
|
||||
if (kierros.getId() == -1) kierrokset.add(kierros);
|
||||
MultiColumnListView.ListViewColumn<Asiakas> uusiSarake = new MultiColumnListView.ListViewColumn<>();
|
||||
uusiSarake.setHeader(new Label("Kierros " + uudenKierroksenNumero));
|
||||
uusiSarake.setItems(lisättäväKierros.getAsiakkaat());
|
||||
mclv.getColumns().add(uudenKierroksenNumero-1, uusiSarake);
|
||||
uusiSarake.setHeader(new Label("Kierros " + kierros.getKierrosNumero()));
|
||||
uusiSarake.setItems(kierros.getAsiakkaat());
|
||||
mclv.getColumns().add(kierros.getKierrosNumero()-1, uusiSarake);
|
||||
}
|
||||
|
||||
private void tallennaKierrokset() {
|
||||
+9
-9
@@ -1,13 +1,13 @@
|
||||
package fi.lpam.ruokamanageri.gui;
|
||||
package fi.lpam.gui;
|
||||
|
||||
import fi.lpam.ruokamanageri.dataluokat.Asiakas;
|
||||
import fi.lpam.ruokamanageri.dataluokat.Kierros;
|
||||
import fi.lpam.ruokamanageri.dataluokat.Kuljetus;
|
||||
import fi.lpam.ruokamanageri.gui.tableCell.IntegerFieldTableCellFactory;
|
||||
import fi.lpam.ruokamanageri.gui.tableCell.KuljetaTableCell;
|
||||
import fi.lpam.ruokamanageri.tulostajat.KuljetusListaTulostaja;
|
||||
import fi.lpam.ruokamanageri.gui.elementit.MaaraTableColumn;
|
||||
import fi.lpam.ruokamanageri.gui.elementit.TabPohja;
|
||||
import fi.lpam.dataluokat.Asiakas;
|
||||
import fi.lpam.dataluokat.Kierros;
|
||||
import fi.lpam.dataluokat.Kuljetus;
|
||||
import fi.lpam.gui.tableCell.IntegerFieldTableCellFactory;
|
||||
import fi.lpam.gui.tableCell.KuljetaTableCell;
|
||||
import fi.lpam.tulostajat.KuljetusListaTulostaja;
|
||||
import fi.lpam.gui.elementit.MaaraTableColumn;
|
||||
import fi.lpam.gui.elementit.TabPohja;
|
||||
|
||||
import javafx.beans.property.SimpleBooleanProperty;
|
||||
import javafx.collections.FXCollections;
|
||||
+5
-5
@@ -1,9 +1,9 @@
|
||||
package fi.lpam.ruokamanageri.gui;
|
||||
package fi.lpam.gui;
|
||||
|
||||
import fi.lpam.ruokamanageri.dataluokat.RaporttiRivi;
|
||||
import fi.lpam.ruokamanageri.tulostajat.KuljetusRaporttiTulostaja;
|
||||
import fi.lpam.ruokamanageri.gui.tableCell.PaivamaaraTableCell;
|
||||
import fi.lpam.ruokamanageri.gui.elementit.TabPohja;
|
||||
import fi.lpam.dataluokat.RaporttiRivi;
|
||||
import fi.lpam.tulostajat.KuljetusRaporttiTulostaja;
|
||||
import fi.lpam.gui.tableCell.PaivamaaraTableCell;
|
||||
import fi.lpam.gui.elementit.TabPohja;
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.geometry.Pos;
|
||||
import javafx.scene.control.*;
|
||||
+9
-8
@@ -1,9 +1,10 @@
|
||||
package fi.lpam.ruokamanageri.gui.elementit;
|
||||
package fi.lpam.gui.elementit;
|
||||
|
||||
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.SimpleBooleanProperty;
|
||||
import javafx.geometry.Pos;
|
||||
import javafx.scene.Node;
|
||||
import javafx.scene.control.ContentDisplay;
|
||||
import javafx.scene.control.Label;
|
||||
@@ -14,12 +15,10 @@ import javafx.scene.layout.VBox;
|
||||
public class AsiakasListCell extends MultiColumnListView.ColumnListCell<Asiakas> {
|
||||
private final StackPane wrapper;
|
||||
|
||||
public AsiakasListCell(MultiColumnListView multiColumnListView) {
|
||||
//noinspection unchecked
|
||||
public AsiakasListCell(MultiColumnListView<Asiakas> multiColumnListView) {
|
||||
super(multiColumnListView);
|
||||
this.setHeight(150);
|
||||
this.setPrefHeight(50);
|
||||
|
||||
this.setMinHeight(60);
|
||||
this.setMaxHeight(60);
|
||||
|
||||
VBox content = new VBox();
|
||||
content.visibleProperty().bind(placeholder.not().and(emptyProperty().not()));
|
||||
@@ -30,9 +29,11 @@ public class AsiakasListCell extends MultiColumnListView.ColumnListCell<Asiakas>
|
||||
contentPlaceholder.managedProperty().bind(placeholder);
|
||||
|
||||
Label label = new Label();
|
||||
label.setFont(TabPohja.tekstiFont);
|
||||
label.textProperty().bind(textProperty());
|
||||
|
||||
wrapper = new StackPane(content, contentPlaceholder, label);
|
||||
wrapper.setAlignment(Pos.CENTER_LEFT);
|
||||
setGraphic(wrapper);
|
||||
setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
|
||||
}
|
||||
@@ -59,7 +60,7 @@ public class AsiakasListCell extends MultiColumnListView.ColumnListCell<Asiakas>
|
||||
placeholder.set(true);
|
||||
setText("");
|
||||
} else {
|
||||
setText(asiakas.getNimi() + ": " + asiakas.getOsoite());
|
||||
setText(asiakas.getNimi() + "\n" + asiakas.getOsoite());
|
||||
}
|
||||
} else {
|
||||
setText("");
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package fi.lpam.ruokamanageri.gui.elementit;
|
||||
package fi.lpam.gui.elementit;
|
||||
|
||||
import javafx.scene.control.Spinner;
|
||||
import javafx.scene.control.SpinnerValueFactory;
|
||||
+8
-10
@@ -1,21 +1,19 @@
|
||||
package fi.lpam.ruokamanageri.gui.elementit;
|
||||
package fi.lpam.gui.elementit;
|
||||
|
||||
import javafx.scene.control.TableColumn;
|
||||
|
||||
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) {
|
||||
super(columnLabel);
|
||||
this.setResizable(false);
|
||||
this.setResizable(true);
|
||||
this.setReorderable(false);
|
||||
this.setMinWidth(minWidth);
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package fi.lpam.gui.elementit;
|
||||
|
||||
import fi.lpam.Main;
|
||||
import javafx.geometry.Pos;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.layout.*;
|
||||
import javafx.scene.paint.Color;
|
||||
import javafx.stage.Stage;
|
||||
import one.jpro.platform.mdfx.MarkdownView;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.Objects;
|
||||
|
||||
public class MuutosIlmoitus extends Stage {
|
||||
public MuutosIlmoitus() {
|
||||
super();
|
||||
VBox root = new VBox();
|
||||
root.setBorder(new Border(new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID, CornerRadii.EMPTY, BorderWidths.DEFAULT)));
|
||||
root.setPadding(TabPohja.oletusInsets);
|
||||
root.setStyle(TabPohja.oletusStyle);
|
||||
root.setAlignment(Pos.CENTER);
|
||||
root.setSpacing(10);
|
||||
|
||||
String md;
|
||||
try (InputStreamReader isr = new InputStreamReader(Objects.requireNonNull(Main.class.getClassLoader().getResourceAsStream("CHANGELOG.md")))) {
|
||||
md = isr.readAllAsString();
|
||||
int toinenMerkintä = md.indexOf("# ", 1);
|
||||
int kolmasMerkintä = md.indexOf("# ", toinenMerkintä + 1);
|
||||
int endIndex = md.indexOf("# ", kolmasMerkintä + 1);
|
||||
md = md.substring(0, endIndex);
|
||||
}
|
||||
catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
md = "# Virhe versiolokin haussa";
|
||||
}
|
||||
|
||||
MarkdownView markdownView = new MarkdownView(md);
|
||||
root.getChildren().add(markdownView);
|
||||
|
||||
Button ok = new Button("OK");
|
||||
ok.setFont(TabPohja.buttonFont);
|
||||
ok.setOnAction(e -> this.close());
|
||||
root.getChildren().add(ok);
|
||||
|
||||
Scene scene = new Scene(root);
|
||||
this.setScene(scene);
|
||||
this.setTitle("Uusi versio, katso muutokset alta!");
|
||||
this.setResizable(false);
|
||||
this.show();
|
||||
|
||||
Main.properties.setProperty("viimeisinVersio", Main.properties.getProperty("version"));
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package fi.lpam.ruokamanageri.gui.elementit;
|
||||
package fi.lpam.gui.elementit;
|
||||
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.scene.layout.*;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package fi.lpam.ruokamanageri.gui.tableCell;
|
||||
package fi.lpam.gui.tableCell;
|
||||
|
||||
import javafx.scene.control.TableCell;
|
||||
import javafx.scene.control.TableColumn;
|
||||
+4
-4
@@ -1,8 +1,8 @@
|
||||
package fi.lpam.ruokamanageri.gui.tableCell;
|
||||
package fi.lpam.gui.tableCell;
|
||||
|
||||
import fi.lpam.ruokamanageri.dataluokat.Asiakas;
|
||||
import fi.lpam.ruokamanageri.dataluokat.Kuljetus;
|
||||
import fi.lpam.ruokamanageri.gui.KuljetusListat;
|
||||
import fi.lpam.dataluokat.Asiakas;
|
||||
import fi.lpam.dataluokat.Kuljetus;
|
||||
import fi.lpam.gui.KuljetusListat;
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.ContentDisplay;
|
||||
+2
-2
@@ -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 java.time.LocalDate;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package fi.lpam.ruokamanageri.gui.virheDialogit;
|
||||
package fi.lpam.gui.virheDialogit;
|
||||
|
||||
public class SiirtoVirhe extends TietokantaVirhe{
|
||||
public SiirtoVirhe(Exception e){
|
||||
+2
-2
@@ -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.image.Image;
|
||||
import javafx.scene.image.ImageView;
|
||||
@@ -1,29 +0,0 @@
|
||||
package fi.lpam.ruokamanageri;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Properties;
|
||||
|
||||
public class Main {
|
||||
public static boolean dev;
|
||||
public static Properties properties;
|
||||
|
||||
static void main(String[] args) {
|
||||
//noinspection RedundantIfStatement
|
||||
if (args.length > 0) {
|
||||
dev = true;
|
||||
} else {
|
||||
dev = false;
|
||||
}
|
||||
|
||||
try {
|
||||
properties = new Properties();
|
||||
properties.load(Main.class.getClassLoader().getResourceAsStream("app.properties"));
|
||||
}
|
||||
catch (IOException e) {
|
||||
//noinspection CallToPrintStackTrace
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
App.main();
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -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 java.io.IOException;
|
||||
+2
-2
@@ -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.time.LocalDate;
|
||||
+2
-2
@@ -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.PDPage;
|
||||
import org.apache.pdfbox.pdmodel.PDPageContentStream;
|
||||
@@ -8,7 +8,8 @@ module fi.lpam.ruokamanageri {
|
||||
requires java.desktop;
|
||||
requires org.apache.pdfbox;
|
||||
requires org.apache.commons.lang3;
|
||||
requires one.jpro.platform.mdfx;
|
||||
|
||||
opens fi.lpam.ruokamanageri.dataluokat to javafx.base;
|
||||
exports fi.lpam.ruokamanageri;
|
||||
opens fi.lpam.dataluokat to javafx.base;
|
||||
exports fi.lpam;
|
||||
}
|
||||
@@ -1,3 +1,7 @@
|
||||
# 3.0.1
|
||||
- Kierroshallinnan muokkaus tukemaan paremmin useampaa kierrosta
|
||||
- Kosmeettisia viilauksia muuallekin
|
||||
|
||||
# 3.0.0
|
||||
- Lisätty lauantai ja sunnuntai mahdollisiksi kuljetuspäiviksi
|
||||
- Mahdollisuus kuljettaa (ja muokata listaa) yli 10 ateriaa per asiakas
|
||||
@@ -1,2 +0,0 @@
|
||||
Manifest-Version: 1.0
|
||||
Main-Class: fi.lpam.ruokamanageri.Main
|
||||
@@ -1 +0,0 @@
|
||||
version=${project.version}
|
||||
@@ -0,0 +1,2 @@
|
||||
version=${project.version}
|
||||
viimeisinVersio=0.0.0
|
||||
Reference in New Issue
Block a user