This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new bdf017117 [OPENMEETINGS-2824] wicketstuff is updated; charts are moved 
to chart.js
bdf017117 is described below

commit bdf017117f23d724ee46f20a8f76089d0302e7f1
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Sun Nov 1 23:10:58 2026 +0700

    [OPENMEETINGS-2824] wicketstuff is updated; charts are moved to chart.js
---
 LICENSE                                            | 125 +++++++------
 openmeetings-web/pom.xml                           |   4 -
 openmeetings-web/src/main/front/package.json       |   1 +
 .../src/main/front/src/css/_polls.scss             |   4 +-
 openmeetings-web/src/main/front/src/room/index.js  |   2 +
 .../src/main/front/src/room/omcharts.js            |  61 +++++++
 openmeetings-web/src/main/java/module-info.java    |   2 -
 .../openmeetings/web/room/menu/PollsSubMenu.java   |   4 +-
 .../web/room/poll/PollResultsDialog.html           |   5 +-
 .../web/room/poll/PollResultsDialog.java           | 197 +++++----------------
 pom.xml                                            |  11 +-
 11 files changed, 182 insertions(+), 234 deletions(-)

diff --git a/LICENSE b/LICENSE
index 09963ab13..ba41c67eb 100644
--- a/LICENSE
+++ b/LICENSE
@@ -234,9 +234,9 @@ conditions of the following licenses.
 
     BSD-2-Clause
 
-        * commonmark-java core (org.commonmark:commonmark:0.30.0 - 
https://github.com/commonmark/commonmark-java/commonmark)
-        * commonmark-java extension for strikethrough 
(org.commonmark:commonmark-ext-gfm-strikethrough:0.30.0 - 
https://github.com/commonmark/commonmark-java/commonmark-ext-gfm-strikethrough)
-        * commonmark-java extension for tables 
(org.commonmark:commonmark-ext-gfm-tables:0.30.0 - 
https://github.com/commonmark/commonmark-java/commonmark-ext-gfm-tables)
+        * commonmark-java core (org.commonmark:commonmark:0.31.0 - 
https://github.com/commonmark/commonmark-java/commonmark)
+        * commonmark-java extension for strikethrough 
(org.commonmark:commonmark-ext-gfm-strikethrough:0.31.0 - 
https://github.com/commonmark/commonmark-java/commonmark-ext-gfm-strikethrough)
+        * commonmark-java extension for tables 
(org.commonmark:commonmark-ext-gfm-tables:0.31.0 - 
https://github.com/commonmark/commonmark-java/commonmark-ext-gfm-tables)
         * PostgreSQL JDBC Driver (org.postgresql:postgresql:42.7.14 - 
https://jdbc.postgresql.org)
 
     CDDL, v1.0, LGPL, v2.1 or later
@@ -331,7 +331,7 @@ conditions of the following licenses.
         * Tempus Dominus Bootstrap 4 
(org.webjars:tempusdominus-bootstrap-4:5.39.0 - http://webjars.org)
         * typeahead.js (org.webjars:typeaheadjs:0.10.5-1 - http://webjars.org)
         * uuid (org.webjars.npm:uuid:9.0.0-beta.0 - https://www.webjars.org)
-        * wicketstuff-urlfragment 
(org.wicketstuff:wicketstuff-urlfragment:10.12.0-20261014.155132-34 - 
https://github.com/Horsed/WicketUrlFragment/wicketstuff-urlfragment)
+        * wicketstuff-urlfragment 
(org.wicketstuff:wicketstuff-urlfragment:10.12.0 - 
https://github.com/Horsed/WicketUrlFragment/wicketstuff-urlfragment)
 
     NOASSERTION
 
@@ -339,7 +339,7 @@ conditions of the following licenses.
 
     Oracle Free Use Terms and Conditions (FUTC)
 
-        * ojdbc10 (com.oracle.database.jdbc:ojdbc10:19.32.0.0 - 
https://www.oracle.com/database/technologies/maven-central-guide.html)
+        * ojdbc10 (com.oracle.database.jdbc:ojdbc10:19.33.0.0 - 
https://www.oracle.com/database/technologies/maven-central-guide.html)
 
     Public Domain
 
@@ -363,6 +363,7 @@ conditions of the following licenses.
         * Apache Commons Math (org.apache.commons:commons-math3:3.6.1 - 
http://commons.apache.org/proper/commons-math/)
         * Apache Commons Net (commons-net:commons-net:3.13.0 - 
https://commons.apache.org/proper/commons-net/)
         * Apache Commons Pool (org.apache.commons:commons-pool2:2.13.1 - 
https://commons.apache.org/proper/commons-pool/)
+        * Apache Commons Secure XML 
(org.apache.commons:commons-secure-xml:1.1.0 - 
https://commons.apache.org/proper/commons-secure-xml/)
         * Apache Commons Text (org.apache.commons:commons-text:1.15.0 - 
https://commons.apache.org/proper/commons-text)
         * Apache CXF Advanced Logging Feature 
(org.apache.cxf:cxf-rt-features-logging:4.2.4 - 
https://cxf.apache.org/cxf-rt-features-logging)
         * Apache CXF Core (org.apache.cxf:cxf-core:4.2.4 - 
https://cxf.apache.org)
@@ -403,38 +404,37 @@ conditions of the following licenses.
         * Apache POI - Common (org.apache.poi:poi:5.5.1 - 
https://poi.apache.org/)
         * Apache ServiceMix :: Bundles :: dom4j 
(org.apache.servicemix.bundles:org.apache.servicemix.bundles.dom4j:2.1.4_1 - 
http://servicemix.apache.org/bundles-pom/org.apache.servicemix.bundles.dom4j/)
         * Apache ServiceMix :: Bundles :: xpp3 
(org.apache.servicemix.bundles:org.apache.servicemix.bundles.xpp3:1.1.4c_7 - 
http://servicemix.apache.org/bundles-pom/org.apache.servicemix.bundles.xpp3/)
-        * Apache Tika Apple parser module 
(org.apache.tika:tika-parser-apple-module:4.1.0 - 
https://tika.apache.org/tika-parser-apple-module/)
-        * Apache Tika audiovideo parser module 
(org.apache.tika:tika-parser-audiovideo-module:4.1.0 - 
https://tika.apache.org/tika-parser-audiovideo-module/)
-        * Apache Tika cad parser module 
(org.apache.tika:tika-parser-cad-module:4.1.0 - 
https://tika.apache.org/tika-parser-cad-module/)
-        * Apache Tika code parser module 
(org.apache.tika:tika-parser-code-module:4.1.0 - 
https://tika.apache.org/tika-parser-code-module/)
-        * Apache Tika core (org.apache.tika:tika-core:4.1.0 - 
https://tika.apache.org/)
-        * Apache Tika crypto parser module 
(org.apache.tika:tika-parser-crypto-module:4.1.0 - 
https://tika.apache.org/tika-parser-crypto-module/)
-        * Apache Tika data URI commons 
(org.apache.tika:tika-parser-datauri-commons:4.1.0 - 
https://tika.apache.org/tika-parser-datauri-commons/)
-        * Apache Tika digest commons 
(org.apache.tika:tika-parser-digest-commons:4.1.0 - 
https://tika.apache.org/tika-parser-digest-commons/)
-        * Apache Tika font parser module 
(org.apache.tika:tika-parser-font-module:4.1.0 - 
https://tika.apache.org/tika-parser-font-module/)
-        * Apache Tika HTML encoding detector 
(org.apache.tika:tika-encoding-detector-html:4.1.0 - 
https://tika.apache.org/tika-encoding-detectors/tika-encoding-detector-html/)
-        * Apache Tika html parser module 
(org.apache.tika:tika-parser-html-module:4.1.0 - 
https://tika.apache.org/tika-parser-html-module/)
-        * Apache Tika image parser module 
(org.apache.tika:tika-parser-image-module:4.1.0 - 
https://tika.apache.org/tika-parser-image-module/)
-        * Apache Tika mail commons 
(org.apache.tika:tika-parser-mail-commons:4.1.0 - 
https://tika.apache.org/tika-parser-mail-commons/)
-        * Apache Tika mail parser module 
(org.apache.tika:tika-parser-mail-module:4.1.0 - 
https://tika.apache.org/tika-parser-mail-module/)
-        * Apache Tika Microsoft parser module 
(org.apache.tika:tika-parser-microsoft-module:4.1.0 - 
https://tika.apache.org/tika-parser-microsoft-module/)
-        * Apache Tika miscellaneous office format parser module 
(org.apache.tika:tika-parser-miscoffice-module:4.1.0 - 
https://tika.apache.org/tika-parser-miscoffice-module/)
-        * Apache Tika ML charset encoding detector 
(org.apache.tika:tika-encoding-detector-mojibuster:4.1.0 - 
https://tika.apache.org/tika-encoding-detectors/tika-encoding-detector-mojibuster/)
-        * Apache Tika ML core (no Tika dependencies) 
(org.apache.tika:tika-ml-core:4.1.0 - https://tika.apache.org/tika-ml-core/)
-        * Apache Tika ML junk detector — runtime and training tools 
(org.apache.tika:tika-ml-junkdetect:4.1.0 - 
https://tika.apache.org/tika-ml-junkdetect/)
-        * Apache Tika news parser module 
(org.apache.tika:tika-parser-news-module:4.1.0 - 
https://tika.apache.org/tika-parser-news-module/)
-        * Apache Tika OCR parser module 
(org.apache.tika:tika-parser-ocr-module:4.1.0 - 
https://tika.apache.org/tika-parser-ocr-module/)
-        * Apache Tika package parser module 
(org.apache.tika:tika-parser-pkg-module:4.1.0 - 
https://tika.apache.org/tika-parser-pkg-module/)
-        * Apache Tika PDF parser module 
(org.apache.tika:tika-parser-pdf-module:4.1.0 - 
https://tika.apache.org/tika-parser-pdf-module/)
-        * Apache Tika serialization (org.apache.tika:tika-serialization:4.1.0 
- https://tika.apache.org)
-        * Apache Tika standard parser package 
(org.apache.tika:tika-parsers-standard-package:4.1.0 - 
https://tika.apache.org/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/)
-        * Apache Tika text parser module 
(org.apache.tika:tika-parser-text-module:4.1.0 - 
https://tika.apache.org/tika-parser-text-module/)
-        * Apache Tika WARC parser module 
(org.apache.tika:tika-parser-webarchive-module:4.1.0 - 
https://tika.apache.org/tika-parser-webarchive-module/)
-        * Apache Tika XML parser module 
(org.apache.tika:tika-parser-xml-module:4.1.0 - 
https://tika.apache.org/tika-parser-xml-module/)
-        * Apache Tika XMP commons 
(org.apache.tika:tika-parser-xmp-commons:4.1.0 - 
https://tika.apache.org/tika-parser-xmp-commons/)
-        * Apache Tika ZIP commons 
(org.apache.tika:tika-parser-zip-commons:4.1.0 - 
https://tika.apache.org/tika-parser-zip-commons/)
-        * Apache Wicket IPageStore Common 
(org.wicketstuff:wicketstuff-datastore-common:10.12.0-20261014.155132-38 - 
http://wicketstuff.org/datastores-parent/wicketstuff-datastore-common)
-        * Apache Wicket IPageStore Hazelcast 
(org.wicketstuff:wicketstuff-datastore-hazelcast:10.12.0-20261014.155132-33 - 
http://wicketstuff.org/datastores-parent/wicketstuff-datastore-hazelcast)
+        * Apache Tika Apple parser module 
(org.apache.tika:tika-parser-apple-module:4.2.0 - 
https://tika.apache.org/tika-parser-apple-module/)
+        * Apache Tika audiovideo parser module 
(org.apache.tika:tika-parser-audiovideo-module:4.2.0 - 
https://tika.apache.org/tika-parser-audiovideo-module/)
+        * Apache Tika cad parser module 
(org.apache.tika:tika-parser-cad-module:4.2.0 - 
https://tika.apache.org/tika-parser-cad-module/)
+        * Apache Tika code parser module 
(org.apache.tika:tika-parser-code-module:4.2.0 - 
https://tika.apache.org/tika-parser-code-module/)
+        * Apache Tika core (org.apache.tika:tika-core:4.2.0 - 
https://tika.apache.org/)
+        * Apache Tika crypto parser module 
(org.apache.tika:tika-parser-crypto-module:4.2.0 - 
https://tika.apache.org/tika-parser-crypto-module/)
+        * Apache Tika data URI commons 
(org.apache.tika:tika-parser-datauri-commons:4.2.0 - 
https://tika.apache.org/tika-parser-datauri-commons/)
+        * Apache Tika digest commons 
(org.apache.tika:tika-parser-digest-commons:4.2.0 - 
https://tika.apache.org/tika-parser-digest-commons/)
+        * Apache Tika font parser module 
(org.apache.tika:tika-parser-font-module:4.2.0 - 
https://tika.apache.org/tika-parser-font-module/)
+        * Apache Tika HTML encoding detector 
(org.apache.tika:tika-encoding-detector-html:4.2.0 - 
https://tika.apache.org/tika-encoding-detectors/tika-encoding-detector-html/)
+        * Apache Tika html parser module 
(org.apache.tika:tika-parser-html-module:4.2.0 - 
https://tika.apache.org/tika-parser-html-module/)
+        * Apache Tika image parser module 
(org.apache.tika:tika-parser-image-module:4.2.0 - 
https://tika.apache.org/tika-parser-image-module/)
+        * Apache Tika mail parser module 
(org.apache.tika:tika-parser-mail-module:4.2.0 - 
https://tika.apache.org/tika-parser-mail-module/)
+        * Apache Tika Microsoft parser module 
(org.apache.tika:tika-parser-microsoft-module:4.2.0 - 
https://tika.apache.org/tika-parser-microsoft-module/)
+        * Apache Tika miscellaneous office format parser module 
(org.apache.tika:tika-parser-miscoffice-module:4.2.0 - 
https://tika.apache.org/tika-parser-miscoffice-module/)
+        * Apache Tika ML charset encoding detector 
(org.apache.tika:tika-encoding-detector-mojibuster:4.2.0 - 
https://tika.apache.org/tika-encoding-detectors/tika-encoding-detector-mojibuster/)
+        * Apache Tika ML core (no Tika dependencies) 
(org.apache.tika:tika-ml-core:4.2.0 - https://tika.apache.org/tika-ml-core/)
+        * Apache Tika ML junk detector — runtime and training tools 
(org.apache.tika:tika-ml-junkdetect:4.2.0 - 
https://tika.apache.org/tika-ml-junkdetect/)
+        * Apache Tika news parser module 
(org.apache.tika:tika-parser-news-module:4.2.0 - 
https://tika.apache.org/tika-parser-news-module/)
+        * Apache Tika OCR parser module 
(org.apache.tika:tika-parser-ocr-module:4.2.0 - 
https://tika.apache.org/tika-parser-ocr-module/)
+        * Apache Tika package parser module 
(org.apache.tika:tika-parser-pkg-module:4.2.0 - 
https://tika.apache.org/tika-parser-pkg-module/)
+        * Apache Tika PDF parser module 
(org.apache.tika:tika-parser-pdf-module:4.2.0 - 
https://tika.apache.org/tika-parser-pdf-module/)
+        * Apache Tika serialization (org.apache.tika:tika-serialization:4.2.0 
- https://tika.apache.org)
+        * Apache Tika standard parser package 
(org.apache.tika:tika-parsers-standard-package:4.2.0 - 
https://tika.apache.org/tika-parsers/tika-parsers-standard/tika-parsers-standard-package/)
+        * Apache Tika text parser module 
(org.apache.tika:tika-parser-text-module:4.2.0 - 
https://tika.apache.org/tika-parser-text-module/)
+        * Apache Tika WARC parser module 
(org.apache.tika:tika-parser-webarchive-module:4.2.0 - 
https://tika.apache.org/tika-parser-webarchive-module/)
+        * Apache Tika XML parser module 
(org.apache.tika:tika-parser-xml-module:4.2.0 - 
https://tika.apache.org/tika-parser-xml-module/)
+        * Apache Tika XMP commons 
(org.apache.tika:tika-parser-xmp-commons:4.2.0 - 
https://tika.apache.org/tika-parser-xmp-commons/)
+        * Apache Tika ZIP commons 
(org.apache.tika:tika-parser-zip-commons:4.2.0 - 
https://tika.apache.org/tika-parser-zip-commons/)
+        * Apache Wicket IPageStore Common 
(org.wicketstuff:wicketstuff-datastore-common:10.12.0 - 
http://wicketstuff.org/datastores-parent/wicketstuff-datastore-common)
+        * Apache Wicket IPageStore Hazelcast 
(org.wicketstuff:wicketstuff-datastore-hazelcast:10.12.0 - 
http://wicketstuff.org/datastores-parent/wicketstuff-datastore-hazelcast)
         * Apache XBean :: ASM shaded (repackaged) 
(org.apache.xbean:xbean-asm9-shaded:4.26 - 
http://geronimo.apache.org/maven/xbean/4.26/xbean-asm9-shaded)
         * Asterisk-Java (org.asteriskjava:asterisk-java:3.42.2 - 
https://github.com/asterisk-java/asterisk-java)
         * Bootstrap (org.webjars:bootstrap:5.3.8 - http://webjars.org)
@@ -445,26 +445,27 @@ conditions of the following licenses.
         * Byte Buddy (without dependencies) (net.bytebuddy:byte-buddy:1.18.4 - 
https://bytebuddy.net/byte-buddy)
         * Caffeine cache (com.github.ben-manes.caffeine:caffeine:2.9.3 - 
https://github.com/ben-manes/caffeine)
         * CalDav4j (com.github.caldav4j:caldav4j:1.0.5 - 
https://github.com/caldav4j/caldav4j.git)
-        * com.drewnoakes:metadata-extractor 
(com.drewnoakes:metadata-extractor:2.21.0 - https://drewnoakes.com/code/exif/)
+        * com.drewnoakes:metadata-extractor 
(com.drewnoakes:metadata-extractor:2.22.0 - https://drewnoakes.com/code/exif/)
         * core (org.kurento:kms-api-core:7.3.0 - https://kurento.openvidu.io/)
         * elements (org.kurento:kms-api-elements:7.3.0 - 
https://kurento.openvidu.io/)
         * error-prone annotations 
(com.google.errorprone:error_prone_annotations:2.41.0 - 
https://errorprone.info/error_prone_annotations)
-        * error-prone annotations 
(com.google.errorprone:error_prone_annotations:2.48.0 - 
https://errorprone.info/error_prone_annotations)
+        * error-prone annotations 
(com.google.errorprone:error_prone_annotations:2.50.0 - 
https://errorprone.info/error_prone_annotations)
         * filters (org.kurento:kms-api-filters:7.3.0 - 
https://kurento.openvidu.io/)
         * FindBugs-jsr305 (com.google.code.findbugs:jsr305:3.0.2 - 
http://findbugs.sourceforge.net/)
         * Gson (com.google.code.gson:gson:2.14.0 - 
https://github.com/google/gson)
+        * Gson (com.google.code.gson:gson:2.15.0 - 
https://github.com/google/gson)
         * Guava: Google Core Libraries for Java 
(com.google.guava:guava:33.5.0-jre - https://github.com/google/guava)
         * Guava InternalFutureFailureAccess and InternalFutures 
(com.google.guava:failureaccess:1.0.3 - 
https://github.com/google/guava/failureaccess)
         * Guava ListenableFuture only 
(com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava - 
https://github.com/google/guava/listenablefuture)
         * hazelcast (com.hazelcast:hazelcast:5.7.0 - 
http://www.hazelcast.com/hazelcast/)
         * J2ObjC Annotations (com.google.j2objc:j2objc-annotations:3.1 - 
https://github.com/google/j2objc/)
-        * Jackcess (com.healthmarketscience.jackcess:jackcess:5.0.0 - 
https://jackcess.sourceforge.io)
-        * Jackcess Encrypt 
(com.healthmarketscience.jackcess:jackcess-encrypt:5.0.0 - 
http://jackcessencrypt.sf.net)
+        * Jackcess (com.healthmarketscience.jackcess:jackcess:5.0.4 - 
https://jackcess.sourceforge.io)
+        * Jackcess Encrypt 
(com.healthmarketscience.jackcess:jackcess-encrypt:5.0.2 - 
http://jackcessencrypt.sf.net)
         * Jackson-annotations 
(com.fasterxml.jackson.core:jackson-annotations:2.22 - 
https://github.com/FasterXML/jackson)
         * Jackson-core (com.fasterxml.jackson.core:jackson-core:2.22.0 - 
https://github.com/FasterXML/jackson-core)
-        * Jackson-core (com.fasterxml.jackson.core:jackson-core:2.22.3 - 
https://github.com/FasterXML/jackson-core)
+        * Jackson-core (com.fasterxml.jackson.core:jackson-core:2.22.4 - 
https://github.com/FasterXML/jackson-core)
         * jackson-databind (com.fasterxml.jackson.core:jackson-databind:2.22.0 
- https://github.com/FasterXML/jackson)
-        * jackson-databind (com.fasterxml.jackson.core:jackson-databind:2.22.3 
- https://github.com/FasterXML/jackson)
+        * jackson-databind (com.fasterxml.jackson.core:jackson-databind:2.22.4 
- https://github.com/FasterXML/jackson)
         * Jakarta Dependency Injection 
(jakarta.inject:jakarta.inject-api:2.0.1.MR - 
https://github.com/eclipse-ee4j/injection-api)
         * Jasney Bootstrap Extensions (org.webjars:jasny-bootstrap:3.1.3-2 - 
http://webjars.org)
         * java-libpst (com.pff:java-libpst:0.9.3 - 
https://github.com/rjohnsondev/java-libpst)
@@ -479,8 +480,6 @@ conditions of the following licenses.
         * Jettison (org.codehaus.jettison:jettison:1.5.7 - 
https://github.com/jettison-json/jettison)
         * JODConverter Core (org.jodconverter:jodconverter-core:5.1.1 - 
https://github.com/jodconverter/jodconverter/)
         * JODConverter Local (org.jodconverter:jodconverter-local:5.1.1 - 
https://github.com/jodconverter/jodconverter/)
-        * jqplot4java (org.wicketstuff:jqplot4java:10.12.0-20261014.151453-33 
- http://maven.apache.org)
-        * JqPlot Plugin Integration 
(org.wicketstuff:jqplot:10.12.0-20261014.151512-28 - 
http://wicketstuff.org/jqplot-parent/jqplot)
         * JSpecify annotations (org.jspecify:jspecify:1.0.0 - 
http://jspecify.org/)
         * JSpecify annotations (org.jspecify:jspecify:1.0.1 - 
https://jspecify.dev/)
         * jwarc (org.netpreserve:jwarc:0.37.0 - https://github.com/iipc/jwarc)
@@ -551,23 +550,23 @@ conditions of the following licenses.
         * swagger-annotations (io.swagger.core.v3:swagger-annotations:2.2.55 - 
https://github.com/swagger-api/swagger-core/modules/swagger-annotations)
         * tomcat (org.apache.tomcat:tomcat:11.0.27 - 
https://tomcat.apache.org/)
         * UNO interface library (org.openoffice:unoil:4.1.2 - 
https://wiki.openoffice.org/wiki/Uno)
-        * Wicket Auth Roles 
(org.apache.wicket:wicket-auth-roles:10.12.0-20261023.124610-11 - 
http://wicket.apache.org/wicket-auth-roles)
-        * Wicket Core 
(org.apache.wicket:wicket-core:10.12.0-20261023.153745-14 - 
http://wicket.apache.org/wicket-core)
-        * Wicket Development Utilities 
(org.apache.wicket:wicket-devutils:10.12.0-20261023.124610-11 - 
http://wicket.apache.org/wicket-devutils)
-        * Wicket Extensions 
(org.apache.wicket:wicket-extensions:10.12.0-20261023.124610-11 - 
http://wicket.apache.org/wicket-extensions)
-        * Wicket IoC common code 
(org.apache.wicket:wicket-ioc:10.12.0-20261023.124610-11 - 
http://wicket.apache.org/wicket-ioc)
+        * Wicket Auth Roles (org.apache.wicket:wicket-auth-roles:10.12.0 - 
http://wicket.apache.org/wicket-auth-roles)
+        * Wicket Core (org.apache.wicket:wicket-core:10.12.0 - 
http://wicket.apache.org/wicket-core)
+        * Wicket Development Utilities 
(org.apache.wicket:wicket-devutils:10.12.0 - 
http://wicket.apache.org/wicket-devutils)
+        * Wicket Extensions (org.apache.wicket:wicket-extensions:10.12.0 - 
http://wicket.apache.org/wicket-extensions)
+        * Wicket IoC common code (org.apache.wicket:wicket-ioc:10.12.0 - 
http://wicket.apache.org/wicket-ioc)
         * Wicket JQuery Selectors 
(de.agilecoders.wicket:jquery-selectors:4.0.15 - 
http://nexus.sonatype.org/oss-repository-hosting.html/jquery-selectors)
-        * wicket-jquery-ui-calendar 
(org.wicketstuff:wicketstuff-jquery-ui-calendar:10.12.0-20261014.155132-39 - 
https://github.com/sebfz1/wicket-jquery-ui/wicketstuff-jquery-ui-calendar)
-        * wicket-jquery-ui-core 
(org.wicketstuff:wicketstuff-jquery-ui-core:10.12.0-20261014.155132-34 - 
https://github.com/sebfz1/wicket-jquery-ui/wicketstuff-jquery-ui-core)
-        * wicket-jquery-ui-plugins 
(org.wicketstuff:wicketstuff-jquery-ui-plugins:10.12.0-20261014.155132-40 - 
https://github.com/sebfz1/wicket-jquery-ui/wicketstuff-jquery-ui-plugins)
-        * Wicket Native WebSocket Core 
(org.apache.wicket:wicket-native-websocket-core:10.12.0-20261023.124610-11 - 
http://wicket.apache.org/wicket-native-websocket/wicket-native-websocket-core)
-        * Wicket Native WebSocket Javax 
(org.apache.wicket:wicket-native-websocket-javax:10.12.0-20261023.124610-11 - 
http://wicket.apache.org/wicket-native-websocket/wicket-native-websocket-javax)
-        * Wicket Request 
(org.apache.wicket:wicket-request:10.12.0-20261023.153745-14 - 
http://maven.apache.org)
-        * Wicket Spring Integration 
(org.apache.wicket:wicket-spring:10.12.0-20261023.124610-11 - 
http://wicket.apache.org/wicket-spring)
-        * Wicketstuff Dashboard Core 
(org.wicketstuff:wicketstuff-dashboard-core:10.12.0-20261014.155132-31 - 
http://wicketstuff.org/wicketstuff-dashboard-parent/wicketstuff-dashboard-core)
-        * wicketstuff-jquery-ui 
(org.wicketstuff:wicketstuff-jquery-ui:10.12.0-20261014.155132-35 - 
https://github.com/sebfz1/wicket-jquery-ui/wicketstuff-jquery-ui)
-        * Wicketstuff-Select2 Components 
(org.wicketstuff:wicketstuff-select2:10.12.0-20261014.155132-34 - 
http://wicketstuff.org/wicketstuff-select2-parent/wicketstuff-select2)
-        * Wicket Util 
(org.apache.wicket:wicket-util:10.12.0-20261023.153745-14 - 
http://wicket.apache.org/wicket-util)
+        * wicket-jquery-ui-calendar 
(org.wicketstuff:wicketstuff-jquery-ui-calendar:10.12.0 - 
https://github.com/sebfz1/wicket-jquery-ui/wicketstuff-jquery-ui-calendar)
+        * wicket-jquery-ui-core 
(org.wicketstuff:wicketstuff-jquery-ui-core:10.12.0 - 
https://github.com/sebfz1/wicket-jquery-ui/wicketstuff-jquery-ui-core)
+        * wicket-jquery-ui-plugins 
(org.wicketstuff:wicketstuff-jquery-ui-plugins:10.12.0 - 
https://github.com/sebfz1/wicket-jquery-ui/wicketstuff-jquery-ui-plugins)
+        * Wicket Native WebSocket Core 
(org.apache.wicket:wicket-native-websocket-core:10.12.0 - 
http://wicket.apache.org/wicket-native-websocket/wicket-native-websocket-core)
+        * Wicket Native WebSocket Javax 
(org.apache.wicket:wicket-native-websocket-javax:10.12.0 - 
http://wicket.apache.org/wicket-native-websocket/wicket-native-websocket-javax)
+        * Wicket Request (org.apache.wicket:wicket-request:10.12.0 - 
http://maven.apache.org)
+        * Wicket Spring Integration (org.apache.wicket:wicket-spring:10.12.0 - 
http://wicket.apache.org/wicket-spring)
+        * Wicketstuff Dashboard Core 
(org.wicketstuff:wicketstuff-dashboard-core:10.12.0 - 
http://wicketstuff.org/wicketstuff-dashboard-parent/wicketstuff-dashboard-core)
+        * wicketstuff-jquery-ui (org.wicketstuff:wicketstuff-jquery-ui:10.12.0 
- https://github.com/sebfz1/wicket-jquery-ui/wicketstuff-jquery-ui)
+        * Wicketstuff-Select2 Components 
(org.wicketstuff:wicketstuff-select2:10.12.0 - 
http://wicketstuff.org/wicketstuff-select2-parent/wicketstuff-select2)
+        * Wicket Util (org.apache.wicket:wicket-util:10.12.0 - 
http://wicket.apache.org/wicket-util)
         * Woodstox (com.fasterxml.woodstox:woodstox-core:7.2.2 - 
https://github.com/FasterXML/woodstox)
         * XmlBeans (org.apache.xmlbeans:xmlbeans:5.3.0 - 
https://xmlbeans.apache.org/)
         * XML Commons Resolver Component (xml-resolver:xml-resolver:1.2 - 
http://xml.apache.org/commons/components/resolver/)
@@ -582,7 +581,7 @@ conditions of the following licenses.
     The BSD 3-Clause License (BSD3)
 
         * Adobe XMPCore (com.adobe.xmp:xmpcore:6.1.11 - 
https://www.adobe.com/devnet/xmp/library/eula-xmp-library-java.html)
-        * asm (org.ow2.asm:asm:9.10.1 - http://asm.ow2.io/)
+        * asm (org.ow2.asm:asm:9.11.1 - http://asm.ow2.io/)
         * asm (org.ow2.asm:asm:9.9.1 - http://asm.ow2.io/)
         * bootstrap-italia (org.webjars.npm:bootstrap-italia:2.18.0 - 
https://www.webjars.org)
         * dom4j (org.dom4j:dom4j:2.2.0 - http://dom4j.github.io/)
@@ -598,4 +597,4 @@ conditions of the following licenses.
 
     UnRar License
 
-        * Java Unrar (com.github.junrar:junrar:8.1.1 - 
https://github.com/junrar/junrar)
+        * Java Unrar (com.github.junrar:junrar:8.1.2 - 
https://github.com/junrar/junrar)
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index 15915d50d..b1f0d0f8d 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -449,10 +449,6 @@
                        <groupId>org.wicketstuff</groupId>
                        <artifactId>wicketstuff-select2</artifactId>
                </dependency>
-               <dependency>
-                       <groupId>org.wicketstuff</groupId>
-                       <artifactId>jqplot</artifactId>
-               </dependency>
                <dependency>
                        <groupId>de.agilecoders.wicket</groupId>
                        <artifactId>wicket-bootstrap-extensions</artifactId>
diff --git a/openmeetings-web/src/main/front/package.json 
b/openmeetings-web/src/main/front/package.json
index 39245fe18..df54089eb 100644
--- a/openmeetings-web/src/main/front/package.json
+++ b/openmeetings-web/src/main/front/package.json
@@ -26,6 +26,7 @@
        "dependencies": {
                "fabric": "7.4.0",
                "freeice": "2.2.2",
+               "chart.js": "4.6.1",
                "@mathjax/mathjax-newcm-font": "^4.1.0",
                "@mathjax/src": "^4.1.0",
                "nosleep.js": "^0.12.0",
diff --git a/openmeetings-web/src/main/front/src/css/_polls.scss 
b/openmeetings-web/src/main/front/src/css/_polls.scss
index 39bc4832e..96cbfbb70 100644
--- a/openmeetings-web/src/main/front/src/css/_polls.scss
+++ b/openmeetings-web/src/main/front/src/css/_polls.scss
@@ -1,6 +1,6 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
-#room-poll-chart {
-       height: 300px;
+.room-poll-chart-container {
+       max-height: 20rem;
 }
 #quick-vote {
        position: absolute;
diff --git a/openmeetings-web/src/main/front/src/room/index.js 
b/openmeetings-web/src/main/front/src/room/index.js
index 7bac06097..560f50626 100644
--- a/openmeetings-web/src/main/front/src/room/index.js
+++ b/openmeetings-web/src/main/front/src/room/index.js
@@ -1,4 +1,5 @@
 /* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
+import { OmCharts } from './omcharts'
 
 // Let's re-style jquery-ui dialogs and buttons
 Object.assign($.ui.dialog.prototype.options.classes, {
@@ -19,4 +20,5 @@ Object.assign(window, {
        , Room: require('./room')
        , Activities: require('./activities')
        , UserSettings: require('./user-settings')
+       , OmCharts: OmCharts
 });
diff --git a/openmeetings-web/src/main/front/src/room/omcharts.js 
b/openmeetings-web/src/main/front/src/room/omcharts.js
new file mode 100644
index 000000000..ae04429f2
--- /dev/null
+++ b/openmeetings-web/src/main/front/src/room/omcharts.js
@@ -0,0 +1,61 @@
+/* Licensed under the Apache License, Version 2.0 (the "License") 
http://www.apache.org/licenses/LICENSE-2.0 */
+import Chart from 'chart.js/auto'
+const Settings = require('../main/settings');
+
+export class OmCharts {
+       static updateChart(id, type, setLabel, labels, values) {
+               const canvas = document.getElementById(id);
+               let chart = canvas.chart;
+               if (chart && canvas.chart.options.type != type) {
+                       chart.destroy();
+                       chart = null;
+               }
+               if (chart) {
+                       const data = canvas.chart.data;
+                       data.labels = labels;
+                       const ds = data.datasets[0];
+                       ds.label = setLabel;
+                       ds.data = values;
+                       chart.update();
+               } else {
+                       const opts = {
+                               indexAxis: 'y',
+                               elements: {
+                                       bar: {
+                                               borderWidth: 2,
+                                       }
+                               },
+                               responsive: true,
+                               plugins: {
+                                       legend: {
+                                               position: Settings.isRtl ? 
'left' : 'right',
+                                       },
+                                       title: {
+                                               display: true,
+                                               text: setLabel
+                                       }
+                               }
+                       };
+                       if ('bar' === type) {
+                               opts.scales = {
+                                       y: {
+                                               beginAtZero: true
+                                       }
+                               };
+                               opts.plugins.legend.display = false;
+                       }
+                       canvas.chart = new Chart(canvas, {
+                               type: type,
+                               data: {
+                                       labels: labels,
+                                       datasets: [{
+                                               label: setLabel,
+                                               data: values,
+                                               borderWidth: 1
+                                       }]
+                               },
+                               options: opts
+                       });
+               }
+       }
+};
diff --git a/openmeetings-web/src/main/java/module-info.java 
b/openmeetings-web/src/main/java/module-info.java
index 3df18d701..575f5f60f 100644
--- a/openmeetings-web/src/main/java/module-info.java
+++ b/openmeetings-web/src/main/java/module-info.java
@@ -52,8 +52,6 @@ module org.apache.openmeetings.web {
        requires org.wicketstuff.datastore.hazelcast;
        requires org.wicketstuff.select2;
        requires org.wicketstuff.urlfragment;
-       requires org.wicketstuff.jqplot;
-       requires org.wicketstuff.jqplot4j;
        requires org.wicketstuff.jquery.ui;
        requires org.wicketstuff.jquery.ui.calendar;
        requires org.wicketstuff.jquery.ui.core;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/PollsSubMenu.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/PollsSubMenu.java
index 2db859c50..c4155b9e1 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/PollsSubMenu.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/PollsSubMenu.java
@@ -142,7 +142,7 @@ public class PollsSubMenu implements Serializable {
 
                        @Override
                        protected void onClick(AjaxRequestTarget target) {
-                               pollResults.updateModel(target, true, 
room.getClient().hasRight(Room.Right.MODERATOR));
+                               pollResults.updateModel(target, 
room.getClient().hasRight(Room.Right.MODERATOR));
                                pollResults.show(target);
                        }
                };
@@ -181,7 +181,7 @@ public class PollsSubMenu implements Serializable {
                        vote.show(handler);
                }
                if (pollResults.isOpened()) {
-                       pollResults.updateModel(handler, false, 
room.getClient().hasRight(Room.Right.MODERATOR));
+                       pollResults.updateModel(handler, 
room.getClient().hasRight(Room.Right.MODERATOR));
                }
        }
 
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.html
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.html
index c950c33f9..32f334679 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.html
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.html
@@ -46,8 +46,9 @@
                </div>
        </form>
        <div class="row">
-               <label class="form-label col-4"><wicket:message 
key="40"/></label>
-               <div class="col-7" wicket:id="chart" id="room-poll-chart"></div>
+               <div class="col-11 room-poll-chart-container">
+                       <canvas id="room-poll-chart"></canvas>
+               </div>
        </div>
 </wicket:extend>
 </html>
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
index 7a3153255..4e2486762 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/poll/PollResultsDialog.java
@@ -25,6 +25,9 @@ import static 
org.apache.openmeetings.web.common.confirmation.ConfirmationHelper
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import org.apache.openmeetings.db.dao.room.PollDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
@@ -36,30 +39,12 @@ import 
org.apache.openmeetings.web.common.OmModalCloseButton;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
-import org.apache.wicket.markup.head.CssHeaderItem;
-import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
-import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.ChoiceRenderer;
 import org.apache.wicket.markup.html.form.DropDownChoice;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.model.Model;
 import org.apache.wicket.model.ResourceModel;
-import org.apache.wicket.request.resource.JavaScriptResourceReference;
-
-import org.wicketstuff.jqplot.behavior.JqPlotBehavior;
-import org.wicketstuff.jqplot.behavior.JqPlotCssResourceReference;
-import org.wicketstuff.jqplot.behavior.JqPlotJavascriptResourceReference;
-import org.wicketstuff.jqplot.lib.Chart;
-import org.wicketstuff.jqplot.lib.ChartConfiguration;
-import org.wicketstuff.jqplot.lib.JqPlotResources;
-import org.wicketstuff.jqplot.lib.JqPlotUtils;
-import org.wicketstuff.jqplot.lib.chart.BarChart;
-import org.wicketstuff.jqplot.lib.chart.PieChart;
-import org.wicketstuff.jqplot.lib.elements.Highlighter;
-import org.wicketstuff.jqplot.lib.elements.Location;
-import org.wicketstuff.jqplot.lib.elements.RendererOptions;
 
 import 
de.agilecoders.wicket.core.markup.html.bootstrap.button.BootstrapAjaxLink;
 import de.agilecoders.wicket.core.markup.html.bootstrap.button.Buttons;
@@ -69,8 +54,9 @@ import jakarta.inject.Inject;
 
 public class PollResultsDialog extends Modal<RoomPoll> {
        private static final long serialVersionUID = 1L;
-       private static final String[] NUM_TICKS = new String[] {"1", "2", "3", 
"4", "5", "6", "7", "8", "9", "10"};
-       private final WebMarkupContainer chartDiv = new 
WebMarkupContainer("chart");
+       private static final String NUM_TICKS = getValList(List.of(1, 2, 3, 4, 
5, 6, 7, 8, 9, 10));
+       private String boolTicks;
+
        private final Long roomId;
        private PollSelectForm selForm;
        private PollResultsForm dispForm;
@@ -81,6 +67,7 @@ public class PollResultsDialog extends Modal<RoomPoll> {
        private boolean opened = false;
        private String chartSimple;
        private String chartPie;
+       private String setLabel;
        private final CreatePollDialog createPoll;
        private DropDownChoice<String> chartType;
 
@@ -102,6 +89,8 @@ public class PollResultsDialog extends Modal<RoomPoll> {
 
                chartSimple = getString("1414");
                chartPie = getString("1415");
+               setLabel = getString("40");
+               boolTicks = getValList(List.of(getString("35"), 
getString("34")));
                add(selForm = new PollSelectForm("selForm"));
                add(dispForm = new PollResultsForm("dispForm"));
                addButton(close = new BootstrapAjaxLink<>(BUTTON_MARKUP_ID, 
null, Buttons.Type.Outline_Danger, new ResourceModel("1418")) {
@@ -115,7 +104,7 @@ public class PollResultsDialog extends Modal<RoomPoll> {
 
                                RoomPoll p = pollDao.get(id);
                                selForm.select.setModelObject(p);
-                               dispForm.updateModel(p, true, target);
+                               dispForm.updateModel(p, target);
                                sendRoom(new RoomMessage(roomId, 
findParent(MainPanel.class).getClient(), RoomMessage.Type.POLL_UPDATED));
                                close(target);
                        }
@@ -129,7 +118,7 @@ public class PollResultsDialog extends Modal<RoomPoll> {
                        public void onClick(AjaxRequestTarget target) {
                                pollDao.delete(dispForm.getModelObject());
                                selForm.updateModel(target);
-                               
dispForm.updateModel(selForm.select.getModelObject(), true, target);
+                               
dispForm.updateModel(selForm.select.getModelObject(), target);
                                sendRoom(new RoomMessage(roomId, 
findParent(MainPanel.class).getClient(), RoomMessage.Type.POLL_UPDATED));
                                close(target);
                        }
@@ -157,66 +146,26 @@ public class PollResultsDialog extends Modal<RoomPoll> {
                });
                
clone.setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true);
                addButton(OmModalCloseButton.of());
-               add(chartDiv.setOutputMarkupId(true));
                super.onInitialize();
        }
 
-       public void updateModel(IPartialPageRequestHandler target, boolean 
onOpen, boolean moderator) {
+       private static <T> String getValList(List<T> data) {
+               return data.stream()
+                       .map(v -> "'" + v + "'")
+                       .collect(Collectors.joining(", "));
+       }
+       public void updateModel(IPartialPageRequestHandler target, boolean 
moderator) {
                selForm.updateModel(target);
                this.moderator = moderator;
                RoomPoll p = selForm.select.getModelObject();
-               dispForm.updateModel(p, !onOpen, target);
-       }
-
-       private StringBuilder getScript(Chart<?> chart, boolean onShow) {
-               StringBuilder sb = new StringBuilder()
-                               
.append("$('#").append(chartDiv.getMarkupId()).append("').html(''); ");
-               if (onShow) {
-                       
sb.append("$('#").append(getMarkupId()).append("').off('shown.bs.modal').on('shown.bs.modal',
 function (e) {\n");
-               }
-               
sb.append("$.jqplot('").append(chartDiv.getMarkupId()).append("', ")
-                               .append(chart.getChartData().toJsonString())
-                               .append(", ")
-                               
.append(JqPlotUtils.jqPlotToJson(chart.getChartConfiguration()))
-                               .append(");");
-               if (onShow) {
-                       sb.append("});");
-               }
-               return sb;
-       }
-
-       @Override
-       public void renderHead(IHeaderResponse response) {
-               super.renderHead(response);
-               
response.render(JavaScriptHeaderItem.forReference(JqPlotJavascriptResourceReference.get()));
-               
response.render(CssHeaderItem.forReference(JqPlotCssResourceReference.get()));
-               Chart<?> c1 = new PieChart<>(null);
-               c1.getChartConfiguration().setHighlighter(new Highlighter());
-               for (Chart<?> chart : new Chart<?>[]{c1, new 
BarChart<Integer>(null)}) {
-                       for (String resource : 
JqPlotUtils.retriveJavaScriptResources(chart)) {
-                               
response.render(JavaScriptHeaderItem.forReference(new 
JavaScriptResourceReference(JqPlotBehavior.class, removeMinified(resource))));
-                       }
-               }
-       }
-
-       private static String removeMinified(String inName) {
-               String name = inName;
-               int idxOfExtension = name.lastIndexOf('.');
-               if (idxOfExtension > -1) {
-                       String extension = name.substring(idxOfExtension);
-                       name = name.substring(0, name.length() - 
extension.length() + 1);
-                       if (name.endsWith(".min.")) {
-                               name = name.substring(0, name.length() - 5) + 
extension;
-                       }
-               }
-               return name;
+               dispForm.updateModel(p, target);
        }
 
        @Override
        public Modal<RoomPoll> show(IPartialPageRequestHandler handler) {
                opened = true;
                super.show(handler);
-               redraw(handler, true);
+               redraw(handler);
                return this;
        }
 
@@ -229,84 +178,38 @@ public class PollResultsDialog extends Modal<RoomPoll> {
                return opened;
        }
 
-       private String[] getTicks(RoomPoll p) {
+       private String getTicks(RoomPoll p) {
                return p != null && RoomPoll.Type.NUMERIC == p.getType()
                                ? NUM_TICKS
-                               : new String[] {getString("35"), 
getString("34")};
+                               : boolTicks;
        }
 
-       private static Integer[] initValues(int size) {
-               Integer[] values = new Integer[size];
-               for (int i = 0; i < size; ++i) {
-                       values[i] = 0;
-               }
-               return values;
-       }
-
-       private static Integer[] getValues(RoomPoll p) {
-               Integer[] values = initValues(p != null && 
RoomPoll.Type.NUMERIC == p.getType() ? 10 : 2);
+       private static String getValues(RoomPoll p) {
+               List<AtomicInteger> values = Stream
+                       .generate(() -> new AtomicInteger(0))
+                       .limit(p != null && RoomPoll.Type.NUMERIC == 
p.getType() ? 10 : 2)
+                       .toList();
                if (p != null) {
                        for (RoomPollAnswer a : p.getAnswers()) {
-                               if (RoomPoll.Type.NUMERIC == p.getType()) {
-                                       values[a.getPointList() - 1] ++;
-                               } else {
-                                       
values[Boolean.FALSE.equals(a.getAnswer()) ? 0 : 1] ++;
-                               }
+                               int idx = RoomPoll.Type.NUMERIC == p.getType() 
? a.getPointList() - 1 : (Boolean.FALSE.equals(a.getAnswer()) ? 0 : 1);
+                               values.get(idx).incrementAndGet();
                        }
                }
-               return values;
-       }
-
-       private BarChart<Integer> barChart(RoomPoll p) {
-               String[] ticks = getTicks(p);
-               BarChart<Integer> barChart = new BarChart<>(null);
-               barChart.addValue(List.of(getValues(p)));
-
-               barChart.getSeriesDefaults()
-                               .setRendererOptions(new 
RendererOptions().setHighlightMouseDown(true).setShowDataLabels(true)
-                                               
.setFill(false).setSliceMargin(4).setLineWidth(5).setBarDirection("horizontal"));
-
-               Highlighter h = new Highlighter();
-               h.setShow(true);
-               h.setFormatString("%s, %P");
-               h.setTooltipLocation(Location.ne);
-               h.setShowTooltip(true);
-               h.setUseAxesFormatters(false);
-
-               ChartConfiguration<Long> cfg = barChart.getChartConfiguration();
-               cfg.setLegend(null).setHighlighter(h);
-               cfg.axesInstance().setXaxis(null);
-               
cfg.axesInstance().yAxisInstance().setTicks(ticks).setRenderer(JqPlotResources.CategoryAxisRenderer);
-               return barChart;
-       }
-
-       private PieChart<Integer> pieChart(RoomPoll p) {
-               PieChart<Integer> pieChart = new PieChart<>(null);
-               String[] ticks = getTicks(p);
-               Integer[] values = getValues(p);
-               for (int i = 0; i < values.length; ++i) {
-                       pieChart.addValue(ticks[i], values[i]);
-               }
-
-               pieChart.getSeriesDefaults().setRendererOptions(new 
RendererOptions().setHighlightMouseDown(true)
-                               
.setShowDataLabels(true).setFill(false).setSliceMargin(4).setLineWidth(5));
-
-               Highlighter h = new Highlighter();
-               h.setShow(true);
-               h.setFormatString("%s, %P");
-               h.setTooltipLocation(Location.ne);
-               h.setShowTooltip(true);
-               h.setUseAxesFormatters(false);
-
-               pieChart.getChartConfiguration()
-                       .setLegend(null).setHighlighter(h);
-               return pieChart;
+               return 
values.stream().map(String::valueOf).collect(Collectors.joining(", "));
        }
 
-       private void redraw(IPartialPageRequestHandler handler, boolean onShow) 
{
+       private String getScript() {
                RoomPoll p = dispForm.getModelObject();
-               Chart<?> chart = chartSimple.equals(chartType.getModelObject()) 
? barChart(p) : pieChart(p);
-               handler.appendJavaScript(getScript(chart, onShow));
+               return "OmCharts.updateChart('room-poll-chart', '%s', '%s', 
[%s], [%s]);"
+                       .formatted(
+                               chartSimple.equals(chartType.getModelObject()) 
? "bar" : "pie"
+                               , setLabel
+                               , getTicks(p)
+                               , getValues(p)
+                       );
+       }
+       private void redraw(IPartialPageRequestHandler handler) {
+               handler.appendJavaScript(getScript());
        }
 
        private class PollSelectForm extends Form<RoomPoll> {
@@ -326,19 +229,15 @@ public class PollResultsDialog extends Modal<RoomPoll> {
 
                                @Override
                                public Object getDisplayValue(RoomPoll poll) {
-                                       if (poll == null) {
-                                               return "";
-                                       }
-                                       return poll.getName() + 
(poll.isArchived() ? "" : " (" + getString("1413") + ")");
+                                       return poll == null ? ""
+                                               : poll.getName() + 
(poll.isArchived() ? "" : " (" + getString("1413") + ")");
                                }
 
                                @Override
                                public String getIdValue(RoomPoll poll, int 
index) {
                                        return poll == null ? "" : "" + 
poll.getId();
                                }
-                       
})).add(AjaxFormComponentUpdatingBehavior.onUpdate(EVT_CHANGE
-                                       , target -> 
dispForm.updateModel(select.getModelObject(), true, target)
-                                       )));
+                       
})).add(AjaxFormComponentUpdatingBehavior.onUpdate(EVT_CHANGE, target -> 
dispForm.updateModel(select.getModelObject(), target))));
                        updateModel(null);
                }
 
@@ -372,13 +271,11 @@ public class PollResultsDialog extends Modal<RoomPoll> {
                protected void onInitialize() {
                        add(name, question, count);
                        chartType = new DropDownChoice<>("chartType", 
Model.of(chartSimple), List.of(chartSimple, chartPie));
-                       
add(chartType.add(AjaxFormComponentUpdatingBehavior.onUpdate(EVT_CHANGE
-                                       , target -> redraw(target, false)
-                                       )));
+                       
add(chartType.add(AjaxFormComponentUpdatingBehavior.onUpdate(EVT_CHANGE, target 
-> redraw(target))));
                        super.onInitialize();
                }
 
-               public void updateModel(RoomPoll poll, boolean redraw, 
IPartialPageRequestHandler handler) {
+               public void updateModel(RoomPoll poll, 
IPartialPageRequestHandler handler) {
                        setModelObject(poll);
                        name.setDefaultModelObject(poll == null ? "" : 
VoteDialog.getName(this, poll.getCreator()));
                        question.setDefaultModelObject(poll == null ? "" : 
poll.getQuestion());
@@ -388,9 +285,7 @@ public class PollResultsDialog extends Modal<RoomPoll> {
                        clone.setVisible(moderator && (poll != null && 
poll.isArchived()));
                        delete.setVisible(moderator);
                        handler.add(close, clone, delete);
-                       if (redraw) {
-                               redraw(handler, false);
-                       }
+                       redraw(handler);
                }
        }
 }
diff --git a/pom.xml b/pom.xml
index 7a19f704f..36d18e686 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,7 +47,7 @@
                
<version.maven-javadoc-plugin>3.12.0</version.maven-javadoc-plugin>
                <surefire.version>3.6.1</surefire.version>
                <version.maven-site-plugin>4.0.0-M16</version.maven-site-plugin>
-               
<version.maven-enforcer-plugin>3.6.3</version.maven-enforcer-plugin>
+               
<version.maven-enforcer-plugin>3.7.0</version.maven-enforcer-plugin>
                <version.maven-source-plugin>3.4.0</version.maven-source-plugin>
                
<version.maven-compiler-plugin>3.14.1</version.maven-compiler-plugin>
                
<version.maven-project-info-reports-plugin>3.9.0</version.maven-project-info-reports-plugin>
@@ -88,7 +88,7 @@
                <!-- dependency versions -->
                <junit.version>6.1.3</junit.version>
                <wicket.version>10.12.0</wicket.version>
-               <wicketstuff.version>10.12.0-SNAPSHOT</wicketstuff.version>
+               <wicketstuff.version>10.12.0</wicketstuff.version>
                <wicket-bootstrap.version>7.0.15</wicket-bootstrap.version>
                <fullcalendar.version>7.1.0</fullcalendar.version>
                <spring.version>7.0.10</spring.version>
@@ -123,7 +123,7 @@
                <postgresql.version>42.7.14</postgresql.version>
                <mysql.version>26.10.0</mysql.version>
                <mssql.version>13.6.1.jre11</mssql.version>
-               <ojdbc.version>19.32.0.0</ojdbc.version>
+               <ojdbc.version>19.33.0.0</ojdbc.version>
                <xstream.version>1.4.21</xstream.version>
                <api-all.version>2.1.9</api-all.version>
                <caldav4j.version>1.0.5</caldav4j.version>
@@ -949,11 +949,6 @@
                                <artifactId>wicketstuff-select2</artifactId>
                                <version>${wicketstuff.version}</version>
                        </dependency>
-                       <dependency>
-                               <groupId>org.wicketstuff</groupId>
-                               <artifactId>jqplot</artifactId>
-                               <version>${wicketstuff.version}</version>
-                       </dependency>
                        <dependency>
                                <groupId>de.agilecoders.wicket</groupId>
                                
<artifactId>wicket-bootstrap-extensions</artifactId>

Reply via email to