37 lines
1.4 KiB
C++
37 lines
1.4 KiB
C++
#pragma once
|
||
#include <string>
|
||
#include <QObject>
|
||
#include <QString>
|
||
#include "model/Field.hpp"
|
||
#include "model/ColorScale.hpp"
|
||
#include "model/Anomaly.hpp"
|
||
namespace geopro::data { class IDatasetRepository; }
|
||
namespace geopro::controller {
|
||
|
||
// 数据详情编排:单击/双击数据集 → 拉 散点/网格/色阶/异常 → 发信号给详情面板。被动视图。
|
||
// 仅服务图表,不与 WorkbenchNavController(项目/结构导航)耦合。
|
||
class DatasetDetailController : public QObject {
|
||
Q_OBJECT
|
||
public:
|
||
struct ChartData {
|
||
QString dsId, ddCode;
|
||
geopro::core::ScatterField scatter;
|
||
geopro::core::ColorScale scatterScale;
|
||
geopro::core::Grid grid{1, 1}; // Grid 无默认构造;以占位值初始化,openDataset 会覆盖
|
||
geopro::core::ColorScale gridScale;
|
||
std::vector<geopro::core::Anomaly> anomalies;
|
||
};
|
||
explicit DatasetDetailController(data::IDatasetRepository& repo, QObject* parent = nullptr);
|
||
public slots:
|
||
void openDataset(const QString& dsId, const QString& ddCode); // 双击=新建/聚焦页
|
||
void focusDataset(const QString& dsId); // 单击=聚焦已开页
|
||
signals:
|
||
void chartReady(const ChartData& data);
|
||
void focusRequested(const QString& dsId);
|
||
void loadFailed(const QString& dsId, const QString& message);
|
||
private:
|
||
data::IDatasetRepository& repo_;
|
||
bool busy_ = false;
|
||
};
|
||
} // namespace geopro::controller
|