From 577e99d840f859c8a723eb2add8e830219385889 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Tue, 10 Mar 2026 10:16:27 +0100 Subject: [PATCH 1/2] fixed bug: some polls were shown several times in the list Signed-off-by: Stephan Richter --- .../main/java/de/srsoftware/umbrella/poll/SqliteDb.java | 8 +++++--- web/src/main/resources/web/css/default.css | 4 ++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/poll/src/main/java/de/srsoftware/umbrella/poll/SqliteDb.java b/poll/src/main/java/de/srsoftware/umbrella/poll/SqliteDb.java index 25734cc9..fd5721ca 100644 --- a/poll/src/main/java/de/srsoftware/umbrella/poll/SqliteDb.java +++ b/poll/src/main/java/de/srsoftware/umbrella/poll/SqliteDb.java @@ -133,15 +133,17 @@ public class SqliteDb extends BaseDb implements PollDb { ps.setLong(1,user.id()); ps.setLong(2, user.id()); var rs = ps.executeQuery(); - var list = new ArrayList(); + var map = new HashMap(); while (rs.next()) { + var pollId = rs.getString(ID); + if (map.containsKey(pollId)) continue; var poll = Poll.of(rs); var perm = rs.getInt(PERMISSION); if (perm != 0) poll.permissions().put(user,Permission.of(perm)); - list.add(poll); + map.put(pollId,poll); } rs.close(); - return list; + return map.values().stream().sorted(Comparator.comparing(Poll::name)).toList(); } catch (SQLException sqle){ throw failedToLoadObject(TABLE_POLLS); } diff --git a/web/src/main/resources/web/css/default.css b/web/src/main/resources/web/css/default.css index e4ca5d87..4eb92421 100644 --- a/web/src/main/resources/web/css/default.css +++ b/web/src/main/resources/web/css/default.css @@ -619,6 +619,10 @@ a.wikilink{ } } +.poll .weight .description{ + display: block; + margin: 0 5px; +} @media screen and (max-width: 600px) { .grid2, From 2cd99f362b7fa70e5c482d0f74fac72568718998 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Tue, 10 Mar 2026 11:34:52 +0100 Subject: [PATCH 2/2] overhauled histograms Signed-off-by: Stephan Richter --- .../umbrella/core/constants/Field.java | 1 + .../srsoftware/umbrella/core/model/Poll.java | 81 ++++++++++++++++--- frontend/src/Components/Histogram.svelte | 28 +++++++ frontend/src/routes/poll/Evaluate.svelte | 16 ++-- .../de/srsoftware/umbrella/poll/PollDb.java | 2 +- .../srsoftware/umbrella/poll/PollModule.java | 2 +- .../de/srsoftware/umbrella/poll/SqliteDb.java | 6 +- .../resources/web/css/bloodshed-color.css | 4 + web/src/main/resources/web/css/bloodshed.css | 8 ++ .../main/resources/web/css/default-color.css | 4 + web/src/main/resources/web/css/default.css | 4 + .../main/resources/web/css/winter-color.css | 4 + web/src/main/resources/web/css/winter.css | 8 ++ 13 files changed, 144 insertions(+), 24 deletions(-) create mode 100644 frontend/src/Components/Histogram.svelte diff --git a/core/src/main/java/de/srsoftware/umbrella/core/constants/Field.java b/core/src/main/java/de/srsoftware/umbrella/core/constants/Field.java index 7a6ae833..c343cbf7 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/constants/Field.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/constants/Field.java @@ -144,6 +144,7 @@ public class Field { public static final String START_DATE = "start_date"; public static final String START_TIME = "start_time"; public static final String STATE = "state"; + public static final String STATS = "stats"; public static final String STATUS = "status"; public static final String STATUS_CODE = "code"; public static final String SUBJECT = "subject"; diff --git a/core/src/main/java/de/srsoftware/umbrella/core/model/Poll.java b/core/src/main/java/de/srsoftware/umbrella/core/model/Poll.java index 6d8437a8..20b5b5f8 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/model/Poll.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/model/Poll.java @@ -107,18 +107,79 @@ public class Poll implements Mappable { } public static class Evaluation { - // Map