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