diff --git a/.project b/.project
index 2c312fd..d3e288c 100644
--- a/.project
+++ b/.project
@@ -3,6 +3,7 @@
dcm
+ nicegui
nicegui_widgets
diff --git a/dcm/__init__.py b/dcm/__init__.py
index 3cb7d95..f3b4574 100644
--- a/dcm/__init__.py
+++ b/dcm/__init__.py
@@ -1 +1 @@
-__version__ = "0.1.13"
+__version__ = "0.1.15"
diff --git a/dcm/dcm_core.py b/dcm/dcm_core.py
index e0f188b..58e3381 100644
--- a/dcm/dcm_core.py
+++ b/dcm/dcm_core.py
@@ -5,6 +5,7 @@
"""
import json
import os
+from datetime import datetime
from dataclasses import dataclass, field
from json.decoder import JSONDecodeError
from typing import Any, Dict, List, Optional, Tuple, Union
@@ -474,6 +475,24 @@ def file_name(self):
self.learner_id, lowercase=False, regex_pattern=r"[^\w\s\-]"
)
return file_name
+
+ @property
+ def most_recent_achievement_iso_date(self) -> Optional[str]:
+ """
+ Get the most recent achievement date in ISO format.
+
+ Returns:
+ Optional[str]: The ISO date string of the most recent achievement, or None if there are no achievements.
+ """
+ if not self.achievements:
+ return None
+ dates = [achievement.date_assessed_iso for achievement in self.achievements if achievement.date_assessed_iso]
+ if not dates:
+ return None
+ # Parse the ISO dates and return the most recent one
+ most_recent_date = max(datetime.fromisoformat(date) for date in dates)
+ return most_recent_date.isoformat()
+
def get_achievement_index(self, path) -> int:
a_index = self.achievement_indices_by_path.get(path)
diff --git a/dcm/dcm_webserver.py b/dcm/dcm_webserver.py
index bdb4b95..b2d1d68 100644
--- a/dcm/dcm_webserver.py
+++ b/dcm/dcm_webserver.py
@@ -369,7 +369,7 @@ def prepare_svg(self):
java_script = self.svg.get_java_script()
# Add the script using ui.add_head_html()
- ui.add_head_html(java_script)
+ ui.add_head_html(java_script,shared=True)
def show_ui(self):
"""
diff --git a/dcm/version.py b/dcm/version.py
index f366dae..4492edc 100644
--- a/dcm/version.py
+++ b/dcm/version.py
@@ -17,7 +17,7 @@ class Version:
name = "dcm"
version = dcm.__version__
date = "2023-11-06"
- updated = "2024-02-01"
+ updated = "2024-02-05"
description = "python based visualization of dynamic competence maps"
authors = "Wolfgang Fahl"
diff --git a/pyproject.toml b/pyproject.toml
index 98852e1..a0fe69e 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -18,7 +18,7 @@ readme = "README.md"
license = {text = "Apache-2.0"}
dependencies = [
# https://github.com/WolfgangFahl/nicegui_widgets
- "ngwidgets>=0.11.0",
+ "ngwidgets>=0.11.4",
# https://pypi.org/project/dataclasses-json/
"dataclasses-json>=0.6.1",
# https://github.com/trentm/python-markdown2
diff --git a/tests/test_learner.py b/tests/test_learner.py
index c6f9c00..35bcd79 100644
--- a/tests/test_learner.py
+++ b/tests/test_learner.py
@@ -37,3 +37,5 @@ def test_learner_competence_trees(self):
self.assertEqual("architecture", tree_ids[0])
for achievement in learner.achievements:
self.assertTrue(achievement.path in learner.achievements_by_path)
+ debug=True
+ self.assertEqual("2023-06-20T00:00:00",learner.most_recent_achievement_iso_date)
\ No newline at end of file