1717#include " QualityControl/DatabaseInterface.h"
1818#include " QualityControl/MonitorObject.h"
1919#include " QualityControl/QcInfoLogger.h"
20+ #include " QualityControl/QualityObject.h"
2021#include < TPC/QualityObserver.h>
2122#include < boost/property_tree/ptree.hpp>
2223#include < TPaveText.h>
@@ -33,6 +34,7 @@ void QualityObserver::configure(std::string name,
3334 const boost::property_tree::ptree& config)
3435{
3536 mObserverName = config.get <std::string>(" qc.postprocessing." + name + " .qualityObserverName" );
37+ mViewDetails = config.get <bool >(" qc.postprocessing." + name + " .observeDetails" , true );
3638
3739 for (const auto & dataSourceConfig : config.get_child (" qc.postprocessing." + name + " .qualityObserverConfig" )) {
3840 Config dataConfig;
@@ -69,11 +71,13 @@ void QualityObserver::initialize(Trigger, framework::ServiceRegistryRef)
6971{
7072 for (const auto & config : mConfig ) {
7173 mQualities [config.groupTitle ] = std::vector<std::string>();
74+ mReasons [config.groupTitle ] = std::vector<std::string>();
75+ mComments [config.groupTitle ] = std::vector<std::string>();
7276 }
7377 mColors [Quality::Bad.getName ()] = kRed ;
7478 mColors [Quality::Medium.getName ()] = kOrange - 3 ;
7579 mColors [Quality::Good.getName ()] = kGreen + 2 ;
76- mColors [Quality::Null.getName ()] = kGray + 2 ;
80+ mColors [Quality::Null.getName ()] = kViolet - 6 ;
7781}
7882
7983void QualityObserver::update (Trigger t, framework::ServiceRegistryRef services)
@@ -97,14 +101,20 @@ void QualityObserver::getQualities(const Trigger& t,
97101
98102 if (mQualities [config.groupTitle ].size () > 0 ) {
99103 mQualities [config.groupTitle ].clear ();
104+ mReasons [config.groupTitle ].clear ();
105+ mComments [config.groupTitle ].clear ();
100106 }
101107 for (const auto & qualityobject : config.qo ) {
102108 const auto qo = qcdb.retrieveQO (config.path + " /" + qualityobject, t.timestamp , t.activity );
103109 if (qo) {
104110 const auto quality = qo->getQuality ();
105111 mQualities [config.groupTitle ].push_back (quality.getName ());
112+ mReasons [config.groupTitle ].push_back (quality.getMetadata (quality.getName (), " " ));
113+ mComments [config.groupTitle ].push_back (quality.getMetadata (" Comment" , " " ));
106114 } else {
107115 mQualities [config.groupTitle ].push_back (Quality::Null.getName ());
116+ mReasons [config.groupTitle ].push_back (" " );
117+ mComments [config.groupTitle ].push_back (" " );
108118 }
109119 }
110120 }
@@ -139,6 +149,17 @@ void QualityObserver::generatePanel()
139149 pt->AddText (Form (" %s = #color[%d]{%s}" , config.qoTitle .at (i).data (), mColors [mQualities [config.groupTitle ].at (i).data ()], mQualities [config.groupTitle ].at (i).data ()));
140150 // To-Check: SetTextAlign does currently not work in QCG
141151 ((TText*)pt->GetListOfLines ()->Last ())->SetTextAlign (12 );
152+
153+ if (mViewDetails ) {
154+ if (mReasons [config.groupTitle ].at (i) != " " ) {
155+ pt->AddText (Form (" #color[%d]{#rightarrow Reason: %s}" , kGray + 2 , mReasons [config.groupTitle ].at (i).data ()));
156+ ((TText*)pt->GetListOfLines ()->Last ())->SetTextAlign (12 );
157+ }
158+ if (mComments [config.groupTitle ].at (i) != " " ) {
159+ pt->AddText (Form (" #color[%d]{#rightarrow Comment: %s}" , kGray + 2 , mComments [config.groupTitle ].at (i).data ()));
160+ ((TText*)pt->GetListOfLines ()->Last ())->SetTextAlign (12 );
161+ }
162+ }
142163 }
143164
144165 // To-Check: AddLine broken for qcg. Does not simply append line
0 commit comments