43 lines
1.5 KiB
C++
43 lines
1.5 KiB
C++
#pragma once
|
||
#include <QStringList>
|
||
#include <QWidget>
|
||
#include <map>
|
||
#include <string>
|
||
#include <vector>
|
||
#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<geopro::data::StructNode>& 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<std::string, CategorySection*> sections_;
|
||
std::map<std::string, QStringList> checkedBySeg_; // 各段当前勾选(合并成并集)
|
||
};
|
||
|
||
} // namespace geopro::app
|