55 Q_PROPERTY(QColor lineageBackground MEMBER lineageBackground_)
56 Q_PROPERTY(QColor lineageNodeBody MEMBER lineageNodeBody_)
57 Q_PROPERTY(QColor lineageNodeBorder MEMBER lineageNodeBorder_)
58 Q_PROPERTY(QColor lineageText MEMBER lineageText_)
59 Q_PROPERTY(QColor lineageLabel MEMBER lineageLabel_)
60 Q_PROPERTY(QColor lineageValue MEMBER lineageValue_)
61 Q_PROPERTY(QColor lineageConnection MEMBER lineageConnection_)
62 Q_PROPERTY(QColor lineageSocket MEMBER lineageSocket_)
63 Q_PROPERTY(QColor lineageHeaderOrigin MEMBER lineageHeaderOrigin_)
64 Q_PROPERTY(QColor lineageHeaderMethod MEMBER lineageHeaderMethod_)
65 Q_PROPERTY(QColor lineageHeaderDataset MEMBER lineageHeaderDataset_)
66 Q_PROPERTY(QColor lineageHeaderCatalog MEMBER lineageHeaderCatalog_)
67 Q_PROPERTY(qreal lineageNodeWidth MEMBER lineageNodeWidth_)
68 Q_PROPERTY(qreal lineageHeaderHeight MEMBER lineageHeaderHeight_)
69 Q_PROPERTY(qreal lineageRowHeight MEMBER lineageRowHeight_)
70 Q_PROPERTY(qreal lineageNodeSpacing MEMBER lineageNodeSpacing_)
71 Q_PROPERTY(qreal lineageCornerRadius MEMBER lineageCornerRadius_)
72 Q_PROPERTY(qreal lineageSocketRadius MEMBER lineageSocketRadius_)
73 Q_PROPERTY(qreal lineagePadding MEMBER lineagePadding_)
76 inline static std::string_view logger_name =
"ores.qt.dataset_view_dialog";
78 [[nodiscard]]
static auto& lg() {
80 static auto instance = make_logger(logger_name);
86 QWidget* parent =
nullptr);
90 void setMethodologies(
const std::vector<dq::domain::methodology>& methodologies);
91 void setDatasetDependencies(
92 const std::vector<dq::domain::dataset_dependency>& dependencies);
93 void setDatasetNames(
const std::map<std::string, std::string>& codeToName);
97 QWidget* createOverviewTab();
98 QWidget* createProvenanceTab();
99 QWidget* createMethodologyTab();
100 QWidget* createLineageTab();
102 void updateOverviewTab();
103 void updateProvenanceTab();
104 void updateMethodologyTab();
105 void updateLineageView();
108 void addProperty(QTreeWidget* tree,
const QString& name,
const QString& value,
109 const QString& tooltip = {});
110 void addSectionHeader(QTreeWidget* tree,
const QString& title);
112 QString findMethodologyName(
const std::optional<boost::uuids::uuid>& methodologyId)
const;
114 const std::optional<boost::uuids::uuid>& methodologyId)
const;
117 qreal createLineageNode(QGraphicsScene* scene, qreal x, qreal y,
118 const QString& headerText,
const QStringList& labels,
119 const QStringList& values,
const QColor& headerColor,
120 bool hasInputSocket,
bool hasOutputSocket)
const;
121 void createLineageNodeBody(QGraphicsScene* scene, qreal x, qreal y,
122 qreal nodeHeight,
const QString& tooltip)
const;
123 void createLineageNodeHeader(QGraphicsScene* scene, qreal x, qreal y,
124 const QString& headerText,
const QColor& headerColor,
125 const QString& tooltip)
const;
126 void createLineageNodeProperties(QGraphicsScene* scene, qreal x, qreal y,
127 const QStringList& labels,
const QStringList& values)
const;
128 void createLineageNodeSockets(QGraphicsScene* scene, qreal x, qreal y,
129 qreal nodeHeight,
bool hasInputSocket,
bool hasOutputSocket)
const;
130 void drawLineageConnection(QGraphicsScene* scene,
131 qreal x1, qreal y1, qreal x2, qreal y2)
const;
132 void drawLabeledConnection(QGraphicsScene* scene,
133 qreal x1, qreal y1, qreal x2, qreal y2,
const QString& label)
const;
136 QTabWidget* tabWidget_;
139 QTreeWidget* overviewTree_;
142 QTreeWidget* provenanceTree_;
145 QTreeWidget* methodologyTree_;
146 QTextBrowser* stepsText_;
149 QGraphicsView* lineageView_;
154 std::vector<dq::domain::methodology> methodologies_;
155 std::vector<dq::domain::dataset_dependency> datasetDependencies_;
156 std::map<std::string, std::string> datasetNames_;
159 QColor lineageBackground_{0x2D, 0x2D, 0x30};
160 QColor lineageNodeBody_{0x3F, 0x3F, 0x46};
161 QColor lineageNodeBorder_{0x52, 0x52, 0x5B};
162 QColor lineageText_{0xFF, 0xFF, 0xFF};
163 QColor lineageLabel_{0xA1, 0xA1, 0xAA};
164 QColor lineageValue_{0xE4, 0xE4, 0xE7};
165 QColor lineageConnection_{0x71, 0x71, 0x7A};
166 QColor lineageSocket_{0x3B, 0x82, 0xF6};
167 QColor lineageHeaderOrigin_{0x3B, 0x82, 0xF6};
168 QColor lineageHeaderMethod_{0x8B, 0x5C, 0xF6};
169 QColor lineageHeaderDataset_{0x22, 0xC5, 0x5E};
170 QColor lineageHeaderCatalog_{0xF9, 0x73, 0x16};
171 qreal lineageNodeWidth_{200};
172 qreal lineageHeaderHeight_{18};
173 qreal lineageRowHeight_{14};
174 qreal lineageNodeSpacing_{60};
175 qreal lineageCornerRadius_{4};
176 qreal lineageSocketRadius_{4};
177 qreal lineagePadding_{4};