Mercurial > hg > orthanc-wsi
changeset 556:9df20285bb1c annotations
cont
| author | Sebastien Jodogne <s.jodogne@gmail.com> |
|---|---|
| date | Tue, 01 Sep 2026 14:48:35 +0200 |
| parents | 304d7b366580 |
| children | 79205cedcf39 |
| files | ViewerPlugin/Annotations/AnnotationsRestApi.cpp |
| diffstat | 1 files changed, 100 insertions(+), 95 deletions(-) [+] |
line wrap: on
line diff
--- a/ViewerPlugin/Annotations/AnnotationsRestApi.cpp Tue Sep 01 14:43:16 2026 +0200 +++ b/ViewerPlugin/Annotations/AnnotationsRestApi.cpp Tue Sep 01 14:48:35 2026 +0200 @@ -758,96 +758,96 @@ }; - class AnnotationsInfo : public ISerializable - { - private: - std::string projectName_; - std::string projectDescription_; - std::set<UserId> activeUsers_; - - public: - AnnotationsInfo() - { - } - - AnnotationsInfo(const Json::Value& serialized) - { - projectName_ = Orthanc::SerializationToolbox::ReadString(serialized, KEY_PROJECT_NAME); - projectDescription_ = Orthanc::SerializationToolbox::ReadString(serialized, KEY_PROJECT_DESCRIPTION); - - const Json::Value& users = serialized[KEY_ACTIVE_USERS]; - - if (!users.isArray()) - { - throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat); - } - - for (Json::Value::ArrayIndex i = 0; i < users.size(); i++) - { - activeUsers_.insert(UserId(users[i])); - } - } - - const std::string& GetProjectName() const - { - return projectName_; - } - - void SetProjectName(const std::string& name) - { - projectName_ = name; - } - - const std::string& GetProjectDescription() const - { - return projectDescription_; - } - - void SetProjectDescription(const std::string& description) - { - projectDescription_ = description; - } - - // Return "true" iff. the user was not already tagged as active - bool AddActiveUser(const UserId& user) - { - if (activeUsers_.find(user) == activeUsers_.end()) - { - activeUsers_.insert(user); - return true; - } - else - { - return false; - } - } - - const std::set<UserId>& GetActiveUsers() const - { - return activeUsers_; - } - - virtual void Serialize(Json::Value& serialized) const ORTHANC_OVERRIDE - { - Json::Value users = Json::arrayValue; - for (std::set<UserId>::const_iterator it = activeUsers_.begin(); it != activeUsers_.end(); ++it) - { - Json::Value user; - it->Serialize(user); - users.append(user); - } - - serialized = Json::objectValue; - serialized[KEY_PROJECT_NAME] = projectName_; - serialized[KEY_PROJECT_DESCRIPTION] = projectDescription_; - serialized[KEY_ACTIVE_USERS] = users; - } - }; - - class AnnotationsManager : public Orthanc::IDynamicObject { private: + class Info : public ISerializable + { + private: + std::string projectName_; + std::string projectDescription_; + std::set<UserId> activeUsers_; + + public: + Info() + { + } + + Info(const Json::Value& serialized) + { + projectName_ = Orthanc::SerializationToolbox::ReadString(serialized, KEY_PROJECT_NAME); + projectDescription_ = Orthanc::SerializationToolbox::ReadString(serialized, KEY_PROJECT_DESCRIPTION); + + const Json::Value& users = serialized[KEY_ACTIVE_USERS]; + + if (!users.isArray()) + { + throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat); + } + + for (Json::Value::ArrayIndex i = 0; i < users.size(); i++) + { + activeUsers_.insert(UserId(users[i])); + } + } + + const std::string& GetProjectName() const + { + return projectName_; + } + + void SetProjectName(const std::string& name) + { + projectName_ = name; + } + + const std::string& GetProjectDescription() const + { + return projectDescription_; + } + + void SetProjectDescription(const std::string& description) + { + projectDescription_ = description; + } + + // Return "true" iff. the user was not already tagged as active + bool AddActiveUser(const UserId& user) + { + if (activeUsers_.find(user) == activeUsers_.end()) + { + activeUsers_.insert(user); + return true; + } + else + { + return false; + } + } + + const std::set<UserId>& GetActiveUsers() const + { + return activeUsers_; + } + + virtual void Serialize(Json::Value& serialized) const ORTHANC_OVERRIDE + { + Json::Value users = Json::arrayValue; + for (std::set<UserId>::const_iterator it = activeUsers_.begin(); it != activeUsers_.end(); ++it) + { + Json::Value user; + it->Serialize(user); + users.append(user); + } + + serialized = Json::objectValue; + serialized[KEY_PROJECT_NAME] = projectName_; + serialized[KEY_PROJECT_DESCRIPTION] = projectDescription_; + serialized[KEY_ACTIVE_USERS] = users; + } + }; + + void Load(const UserId& user) { const std::string key = GetLayersKey(id_, user); @@ -868,7 +868,7 @@ Orthanc::ReaderWriterLock mutex_; AnnotationsManagerId id_; - std::unique_ptr<AnnotationsInfo> info_; + std::unique_ptr<Info> info_; Content content_; public: @@ -881,7 +881,7 @@ if (LookupKeyValueStore(info, key)) { - info_.reset(new AnnotationsInfo(info)); + info_.reset(new Info(info)); for (std::set<UserId>::const_iterator it = info_->GetActiveUsers().begin(); it != info_->GetActiveUsers().end(); ++it) @@ -891,7 +891,7 @@ } else { - info_.reset(new AnnotationsInfo); + info_.reset(new Info); if (OrthancPlugins::RestApiGet(info, "/education/api-plugins/project?id=" + id.GetProjectId(), true)) { @@ -958,7 +958,7 @@ { private: Orthanc::ReaderWriterLock::ReadLock lock_; - const AnnotationsInfo& info_; + const Info& info_; UserId userId_; const UserAnnotationsSettings* userSettings_; @@ -987,9 +987,14 @@ return userSettings_ != NULL; } - const AnnotationsInfo& GetAnnotationsInfo() const + const std::string& GetProjectName() const { - return info_; + return info_.GetProjectName(); + } + + const std::string& GetProjectDescription() const + { + return info_.GetProjectDescription(); } void ListLayers(Json::Value& serialized) const @@ -1283,9 +1288,9 @@ AnnotationsManager::UserReader reader(context.GetAnnotations(), context.GetUser().GetAnnotatingId()); Json::Value answer; - answer["description"] = reader.GetAnnotationsInfo().GetProjectDescription(); + answer["description"] = reader.GetProjectDescription(); answer["enabled"] = ViewerConfiguration::GetInstance().AreAnnotationsEnabled(); - answer["name"] = reader.GetAnnotationsInfo().GetProjectName(); + answer["name"] = reader.GetProjectName(); answer["sharing"] = (ViewerConfiguration::GetInstance().AreAnnotationsEnabled() && ViewerConfiguration::GetInstance().IsAnnotationsSharingEnabled()); answer["user"] = context.GetUser().Format();
