#pragma once #include #include #include #include #include #include "DatasetCategory.hpp" // CategoryBuckets #include "repo/RepoTypes.hpp" namespace geopro::data { class DatasetFieldDictionary; } namespace geopro::app { class CategorySection; // 「三维分析」tab:QScrollArea 竖向堆叠 5 个数据类型大类段(spec §4)。 // 各段勾选合并为并集上抛;生成/详情请求透传。 class CategoryAnalysisTab : public QWidget { Q_OBJECT public: explicit CategoryAnalysisTab(geopro::data::DatasetFieldDictionary* dict, QWidget* parent = nullptr); void setBuckets(const CategoryBuckets& b); // 分发到 5 段(与 categoryConfigs 同序) void setStructure(const std::vector& nodes); // 转发各段 CategorySection* section(const std::string& id) const; // 按 CategorySpec.id 取段 signals: void checkedDatasetsChanged(const QStringList& dsIds); // 5 段勾选并集 void generateVolumeRequested(const QString& dsTypeCode, const QStringList& sourceDsIds); void detailRequested(const QString& dsId, const QString& ddCode, const QString& name); void deleteDatasetRequested(const QString& dsId, const QString& ddCode); // 右键删除切片/异常 private: void recomputeCheckedUnion(); std::map sections_; std::map checkedBySeg_; // 各段当前勾选(合并成并集) }; } // namespace geopro::app