geopro/src/app/panels/chart/DetailViewFactory.cpp

58 lines
3.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "panels/chart/DetailViewFactory.hpp"
#include <stdexcept>
#include <utility>
#include "panels/chart/BarChartView.hpp"
#include "panels/chart/DataTableView.hpp"
#include "panels/chart/GridDataChartView.hpp"
#include "panels/chart/LineChartView.hpp"
#include "panels/chart/RawDataChartView.hpp"
#include "panels/chart/TrajectoryMapView.hpp"
namespace geopro::app {
std::unique_ptr<IDetailView> makeDetailView(controller::ViewKind kind, QWidget* parent,
geopro::data::IColorTemplateRepository* colorTplRepo,
std::function<QString()> projectIdGetter,
geopro::data::IDatasetCommandRepository* cmdRepo,
std::function<QString()> dsIdGetter) {
switch (kind) {
case controller::ViewKind::Scatter: {
auto* raw = new RawDataChartView(parent);
// 注入反演命令仓储 + dsId/projectId 取值回调measurement 反演运算/生成视电阻率)。
raw->setCommandRepo(cmdRepo, dsIdGetter, projectIdGetter);
return std::unique_ptr<IDetailView>(raw);
}
case controller::ViewKind::FilledContour: {
auto* grid = new GridDataChartView(parent);
// 注入色阶模板仓储 + projectId 取值回调(网格剖面「色阶配置」编辑器用)。
grid->setColorTemplateRepo(colorTplRepo, projectIdGetter);
// 注入反演命令仓储 + dsId/projectId 取值回调(网格化/白化/滤波/另存为按钮)。
grid->setCommandRepo(cmdRepo, std::move(dsIdGetter), std::move(projectIdGetter));
return std::unique_ptr<IDetailView>(grid);
}
case controller::ViewKind::Table: {
auto* table = new DataTableView(parent);
// 注入反演命令仓储 + dsId/projectId 取值回调dd_grid「反演」功能按钮用
// 其余 Table 复用场景measurement 列表/trajectory/gr载荷无 functionButtons
// 工具条隐藏,注入的仓储不会被触达 → 无副作用。
table->setCommandRepo(cmdRepo, std::move(dsIdGetter), std::move(projectIdGetter));
return std::unique_ptr<IDetailView>(table);
}
case controller::ViewKind::Bar:
return std::unique_ptr<IDetailView>(new BarChartView(parent));
case controller::ViewKind::LineProfile:
return std::unique_ptr<IDetailView>(new LineChartView(parent));
case controller::ViewKind::WebMap:
// trajectory 地图QWebEngineView + Leaflet + 天地图瓦片,电极经纬点画橙色空心圈并取景。
return std::unique_ptr<IDetailView>(new TrajectoryMapView(parent));
case controller::ViewKind::PolylineMap:
// 后续阶段补PolylineMap。
throw std::runtime_error("makeDetailView: ViewKind not yet implemented");
}
throw std::runtime_error("makeDetailView: unknown ViewKind");
}
} // namespace geopro::app