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