69 inline static std::string_view logger_name =
"ores.qt.data_librarian_window";
70 static constexpr int total_model_loads = 10;
72 [[nodiscard]]
static auto& lg() {
74 static auto instance = make_logger(logger_name);
80 const QString& username,
82 QWidget* parent =
nullptr);
85 QSize sizeHint()
const override {
return QSize(1600, 900); }
88 void statusChanged(
const QString& message);
89 void errorOccurred(
const QString& error_message);
101 void openOriginDimensionsRequested();
102 void openNatureDimensionsRequested();
103 void openTreatmentDimensionsRequested();
104 void openCodingSchemesRequested();
105 void openMethodologiesRequested();
106 void openBundlesRequested();
107 void openDataDomainsRequested();
108 void openSubjectAreasRequested();
109 void openCatalogsRequested();
112 void onNavigationSelectionChanged(
const QModelIndex& current,
113 const QModelIndex& previous);
114 void onDatasetSelectionChanged();
115 void onDatasetDoubleClicked(
const QModelIndex& index);
116 void onRefreshClicked();
117 void onViewDatasetClicked();
118 void onPublishClicked();
119 void onPublicationHistoryClicked();
121 void onLoadError(
const QString& error_message,
const QString& details = {});
124 void onDomainsLoaded();
125 void onSubjectAreasLoaded();
126 void onCatalogsLoaded();
127 void onDatasetDependenciesLoaded();
128 void onMethodologiesLoaded();
129 void onBundlesLoaded();
130 void onBundleMembersLoaded();
131 void onOriginDimensionsLoaded();
132 void onNatureDimensionsLoaded();
133 void onTreatmentDimensionsLoaded();
136 void showHeaderContextMenu(
const QPoint& pos);
139 void showDatasetContextMenu(
const QPoint& pos);
142 void showNavigationContextMenu(
const QPoint& pos);
146 void setupNavigationSidebar();
147 void setupCentralWorkspace();
149 void setupConnections();
150 void buildNavigationTree();
152 void filterDatasetsByCatalog(
const QString& catalogName);
153 void filterDatasetsByDomain(
const QString& domainName);
154 void filterDatasetsBySubjectArea(
const QString& subjectAreaName);
155 void filterDatasetsByBundle(
const QString& bundleCode);
156 void filterDatasetsByOrigin(
const QString& originCode);
157 void filterDatasetsByNature(
const QString& natureCode);
158 void filterDatasetsByTreatment(
const QString& treatmentCode);
159 void clearDatasetFilter();
160 void selectFirstDataset();
161 void setupColumnVisibility();
162 void applyDefaultColumnVisibility();
163 void fetchBundleMembers();
164 std::vector<dq::domain::dataset> getDatasetsUnderNode(
const QModelIndex& index);
171 QSplitter* mainSplitter_;
172 QSplitter* centralSplitter_;
175 QTreeView* navigationTree_;
176 QStandardItemModel* navigationModel_;
180 QAction* refreshAction_;
181 QAction* viewDatasetAction_;
182 QAction* publishAction_;
183 QAction* publicationHistoryAction_;
184 QAction* originDimensionsAction_;
185 QAction* natureDimensionsAction_;
186 QAction* treatmentDimensionsAction_;
187 QAction* codingSchemesAction_;
188 QAction* methodologiesAction_;
189 QAction* bundlesAction_;
192 QTableView* datasetTable_;
193 ClientDatasetModel* datasetModel_;
194 QSortFilterProxyModel* datasetProxyModel_;
197 ClientDataDomainModel* dataDomainModel_;
198 ClientSubjectAreaModel* subjectAreaModel_;
201 ClientMethodologyModel* methodologyModel_;
204 ClientNatureDimensionModel* natureDimensionModel_;
205 ClientTreatmentDimensionModel* treatmentDimensionModel_;
208 std::map<QString, QStringList> bundleMemberCache_;
211 QStatusBar* statusBar_;
212 QProgressBar* loadingProgressBar_;
213 QLabel* statusLabel_;
214 int pendingLoads_{0};
218 QString selectedCatalogName_;
219 QString selectedDomainName_;
220 QString selectedSubjectAreaName_;
221 QString selectedBundleCode_;
222 QString selectedOriginCode_;
223 QString selectedNatureCode_;
224 QString selectedTreatmentCode_;