From 56d7d5efe32d03351619dbc8761b24cf269d770f Mon Sep 17 00:00:00 2001 From: Marius Klepp Date: Thu, 9 Apr 2026 11:07:21 +0200 Subject: [PATCH 1/4] feat: redesign Home view with hero section, stats stripe, and feature cards --- src/main/resources/css/Global.css | 5 +- src/main/resources/css/Home.css | 98 +++++++++++++++++++++++++ src/main/resources/view/Home.fxml | 118 +++++++++++++++++++++--------- 3 files changed, 184 insertions(+), 37 deletions(-) create mode 100644 src/main/resources/css/Home.css diff --git a/src/main/resources/css/Global.css b/src/main/resources/css/Global.css index c39569e..5de6600 100644 --- a/src/main/resources/css/Global.css +++ b/src/main/resources/css/Global.css @@ -57,6 +57,8 @@ .scroll-pane { -fx-background-color: transparent; -fx-border-color: transparent; + -fx-border-width: 0; + -fx-padding: 0; } .scroll-pane > .viewport { @@ -123,4 +125,5 @@ -fx-font-family: "Times New Roman"; -fx-text-fill: white; -fx-font-weight: bold; -} \ No newline at end of file +} + diff --git a/src/main/resources/css/Home.css b/src/main/resources/css/Home.css new file mode 100644 index 0000000..d1a1b64 --- /dev/null +++ b/src/main/resources/css/Home.css @@ -0,0 +1,98 @@ +.hero-section { + -fx-background-color: #1e3a8a; + -fx-padding: 56 48 48 48; +} + +.hero-tag { + -fx-background-color: rgba(255,255,255,0.15); + -fx-text-fill: white; + -fx-font-size: 12px; + -fx-background-radius: 20; + -fx-padding: 4 12 4 12; +} + +.hero-title { + -fx-font-size: 28px; + -fx-text-fill: white; + -fx-font-weight: bold; +} + +.hero-subtitle { + -fx-font-size: 16px; + -fx-text-fill: white; + -fx-wrap-text: true; + -fx-max-width: 440; +} + +.hero-button-primary { + -fx-background-color: white; + -fx-text-fill: #1e3a8a; + -fx-font-weight: bold; + -fx-background-radius: 6; + -fx-padding: 10 22 10 22; + -fx-cursor: hand; +} + +.hero-button-secondary { + -fx-background-color: transparent; + -fx-text-fill: white; + -fx-border-color: rgba(255,255,255,0.6); + -fx-border-radius: 6; + -fx-background-radius: 6; + -fx-padding: 10 22 10 22; + -fx-cursor: hand; +} + +.stats-stripe { + -fx-background-color: #162d6e; + -fx-padding: 20 48 20 48; +} + +.stats-number { + -fx-font-size: 24px; + -fx-font-weight: bold; + -fx-text-fill: white; +} + +.stats-label { + -fx-font-size: 14px; + -fx-text-fill: rgba(255,255,255,0.7); +} + +.features-section { + -fx-background-color: #f8faff; + -fx-padding: 32 48 48 48; +} + +.features-title { + -fx-font-size: 18px; + -fx-font-weight: bold; + -fx-text-fill: #1a1a2e; +} + +.features-grid { + -fx-spacing: 16; +} + +.feature-card { + -fx-background-color: white; + -fx-border-color: #dde3f0; + -fx-border-width: 1; + -fx-border-radius: 10; + -fx-background-radius: 10; + -fx-min-height: 120; + -fx-padding: 20; + -fx-spacing: 8; +} + +.feature-card-title { + -fx-font-size: 14px; + -fx-font-weight: bold; + -fx-text-fill: #1a1a2e; +} + +.feature-card-desc { + -fx-font-size: 13px; + -fx-text-fill: #666666; + -fx-wrap-text: true; +} \ No newline at end of file diff --git a/src/main/resources/view/Home.fxml b/src/main/resources/view/Home.fxml index 7eb6293..65a5f49 100644 --- a/src/main/resources/view/Home.fxml +++ b/src/main/resources/view/Home.fxml @@ -1,48 +1,94 @@ - + + - - - +
- - - - - - -
+ + + + -
\ No newline at end of file +
From e739553949d14773a04bfd773281ac410163f12f Mon Sep 17 00:00:00 2001 From: Marius Klepp Date: Thu, 9 Apr 2026 11:07:46 +0200 Subject: [PATCH 2/4] fix: remove test code from Main, restore setId on User, and fix DonationDao mapping --- src/main/java/app/Main.java | 56 +--------------------- src/main/java/domain/user/User.java | 5 +- src/main/java/persistence/DonationDao.java | 1 - 3 files changed, 3 insertions(+), 59 deletions(-) diff --git a/src/main/java/app/Main.java b/src/main/java/app/Main.java index aed51cc..c30aa59 100644 --- a/src/main/java/app/Main.java +++ b/src/main/java/app/Main.java @@ -5,9 +5,7 @@ import application.security.PasswordHasher; import application.user.UserRegister; import domain.donation.Donation; -import domain.organization.Organization; import domain.user.User; -import integration.InnsamlingskontrollenClient; import integration.security.Sha256PasswordHasher; import java.math.BigDecimal; import java.util.List; @@ -21,59 +19,11 @@ import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; -import persistence.OrganizationDao; -import persistence.db.Database; - -public class Main extends Application { - -import javax.xml.crypto.Data; -import java.io.IOException; -import java.util.List; public class Main extends Application{ public static void main(String[] args) { - try { - Database.getConnection(); - System.out.println("Database connected"); - - UserDao userDao = new UserDao(); - OrganizationDao orgDao = new OrganizationDao(); - DonationDao donationDao = new DonationDao(); - - PasswordHasher hasher = new Sha256PasswordHasher(); - UserRepository userRepo = new UserDao(); - UserRegister userReg = new UserRegister(hasher, userRepo); - - // Test brukerregistrering - userReg.execute("testuser", "12345678", "passord123", "test@example.com"); - System.out.println("Inserted user!"); - - User user = userDao.findByEmail("test@example.com").orElseThrow(); - System.out.println("Hentet bruker: " + user.getUsername() + ", id=" + user.getID()); - - // Hent og lagre organisasjoner fra Innsamlingskontrollen - System.out.println("Henter organisasjoner fra Innsamlingskontrollen..."); - Organization[] fetchedOrgs = InnsamlingskontrollenClient.fetchOrganizations(); - for (Organization org : fetchedOrgs) { - orgDao.insert(org); - } - System.out.println("Lastet inn " + fetchedOrgs.length + " organisasjoner"); - - List orgs = orgDao.getAll(); - System.out.println("Organisasjoner i DB: " + orgs.size()); - System.out.println("Første org: " + orgs.get(0).getName() + ", org_number=" + orgs.get(0).getOrgNumber()); - - // Test donasjon med første org fra DB - Donation donation = new Donation(new BigDecimal("100.00"), user, orgs.get(0)); - donationDao.insert(donation); - System.out.println("Inserted donation, id=" + donation.getId()); - - List donations = donationDao.findByUser(user.getID()); - System.out.println("Antall donasjoner for bruker: " + donations.size()); - - } catch (Exception e) { - e.printStackTrace(); - } + launch(args); + } @Override public void start(Stage stage) throws Exception { @@ -85,8 +35,6 @@ public void start(Stage stage) throws Exception { orgDao.insert(org); } - SceneManager.setStage(stage); - Parent root = FXMLLoader.load(getClass().getResource("/view/MainView.fxml")); Scene scene = new Scene(root, 1275, 725); diff --git a/src/main/java/domain/user/User.java b/src/main/java/domain/user/User.java index 7386967..69a51b8 100644 --- a/src/main/java/domain/user/User.java +++ b/src/main/java/domain/user/User.java @@ -29,7 +29,6 @@ public User(String userName, String phoneNumber, String password, String eMail) this.phoneNumber = phoneNumber; this.eMail = eMail.trim(); this.password = password; - this.id = id; } public String getUsername() { @@ -62,14 +61,12 @@ public void setPhonenumber (String phoneNumber) { this.phoneNumber = phoneNumber; } - public void setId(Long id) { - if (this.id != null) throw new IllegalStateException("ID already set"); this.id = id; + } private static boolean isValidEmail(String email) { if (email == null || email.isBlank()) return false; return email.matches("^[a-zA-Z0-9._%+\\-]+@[a-zA-Z0-9.\\-]+\\.[a-zA-Z]{2,}$"); - } } \ No newline at end of file diff --git a/src/main/java/persistence/DonationDao.java b/src/main/java/persistence/DonationDao.java index 70ddba6..646dba5 100644 --- a/src/main/java/persistence/DonationDao.java +++ b/src/main/java/persistence/DonationDao.java @@ -45,7 +45,6 @@ private Donation mapRow(ResultSet rs) throws SQLException { rs.getString("password_hash"), rs.getString("e_mail") ); - user.setId(rs.getLong("user_id")); Organization org = new Organization(); org.setOrgNumber(rs.getString("org_number")); From 3a2a168d183f8768f2146fb5c3a6e18e7c73aeff Mon Sep 17 00:00:00 2001 From: Marius Klepp Date: Thu, 9 Apr 2026 11:08:06 +0200 Subject: [PATCH 3/4] chore: remove unused SceneManager imports from controllers --- src/main/java/ui/controller/HomeController.java | 1 - src/main/java/ui/controller/OrganizationController.java | 1 - src/main/java/ui/controller/RegisterController.java | 1 - src/main/java/ui/controller/SignInController.java | 1 - 4 files changed, 4 deletions(-) diff --git a/src/main/java/ui/controller/HomeController.java b/src/main/java/ui/controller/HomeController.java index c65c6a4..8aafbd2 100644 --- a/src/main/java/ui/controller/HomeController.java +++ b/src/main/java/ui/controller/HomeController.java @@ -1,6 +1,5 @@ package ui.controller; -import app.SceneManager; import application.security.PasswordHasher; import application.user.UserSignIn; import integration.security.Sha256PasswordHasher; diff --git a/src/main/java/ui/controller/OrganizationController.java b/src/main/java/ui/controller/OrganizationController.java index a0b85d9..547c746 100644 --- a/src/main/java/ui/controller/OrganizationController.java +++ b/src/main/java/ui/controller/OrganizationController.java @@ -1,6 +1,5 @@ package ui.controller; -import app.SceneManager; import application.security.PasswordHasher; import application.user.UserSignIn; import domain.organization.Organization; diff --git a/src/main/java/ui/controller/RegisterController.java b/src/main/java/ui/controller/RegisterController.java index 681b353..9db9bb4 100644 --- a/src/main/java/ui/controller/RegisterController.java +++ b/src/main/java/ui/controller/RegisterController.java @@ -1,6 +1,5 @@ package ui.controller; -import app.SceneManager; import application.security.PasswordHasher; import application.user.UserRegister; import application.user.UserSignIn; diff --git a/src/main/java/ui/controller/SignInController.java b/src/main/java/ui/controller/SignInController.java index f8ebe4c..6541460 100644 --- a/src/main/java/ui/controller/SignInController.java +++ b/src/main/java/ui/controller/SignInController.java @@ -1,6 +1,5 @@ package ui.controller; -import app.SceneManager; import application.security.PasswordHasher; import application.user.UserRegister; import application.user.UserSignIn; From 430cfb0d8a28106dde42da1ad96d7b53801795b8 Mon Sep 17 00:00:00 2001 From: Marius Klepp Date: Thu, 9 Apr 2026 11:16:10 +0200 Subject: [PATCH 4/4] feature: connect explore organizations button --- src/main/resources/css/Home.css | 23 +++++++++++++++++++++++ src/main/resources/view/Home.fxml | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/main/resources/css/Home.css b/src/main/resources/css/Home.css index d1a1b64..616c23c 100644 --- a/src/main/resources/css/Home.css +++ b/src/main/resources/css/Home.css @@ -43,6 +43,29 @@ -fx-cursor: hand; } +.hero-button-primary:hover { + -fx-background-color: #f0f0f0; + -fx-scale-x: 1.03; + -fx-scale-y: 1.03; +} + +.hero-button-primary:pressed { + -fx-background-color: #e0e0e0; + -fx-scale-x: 0.97; + -fx-scale-y: 0.97; +} + +.hero-button-secondary:hover { + -fx-background-color: rgba(255,255,255,0.15); + -fx-scale-x: 1.03; + -fx-scale-y: 1.03; +} + +.hero-button-secondary:pressed { + -fx-scale-x: 0.97; + -fx-scale-y: 0.97; +} + .stats-stripe { -fx-background-color: #162d6e; -fx-padding: 20 48 20 48; diff --git a/src/main/resources/view/Home.fxml b/src/main/resources/view/Home.fxml index 65a5f49..92941f1 100644 --- a/src/main/resources/view/Home.fxml +++ b/src/main/resources/view/Home.fxml @@ -24,7 +24,7 @@