diff --git a/src/app/main.cpp b/src/app/main.cpp index f569ac3..ebaa788 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -1223,27 +1223,28 @@ void buildWorkbench(QMainWindow& window, geopro::data::LocalSampleRepository& re // 渲染由三栏勾选框驱动(Task 7:Column3DDataset::checkedDatasetsChanged → setCheckedDatasets)。 auto generation = std::make_shared(0); QObject::connect( - objectTree, &geopro::app::ObjectTreePanel::checkedTmsChanged, &window, + objectTree, &geopro::app::ObjectTreePanel::checkedSourcesChanged, &window, [&projectRepo, &nav, drawer, emptyState, generation, lastSourceRows, - refreshAnalysis](const QStringList& tmIds) { + refreshAnalysis](const QList& sources) { const unsigned long long myGen = ++(*generation); - emptyState->setVisible(tmIds.isEmpty()); // 有勾选→隐藏引导层,露出中央渲染 - if (tmIds.isEmpty()) { + emptyState->setVisible(sources.isEmpty()); // 有勾选→隐藏引导层,露出中央渲染 + if (sources.isEmpty()) { *lastSourceRows = {}; refreshAnalysis(); // 清空 5 段(客户端三维体仍驻留) + col2D return; } - // 多 TM 异步汇总:每个 TM 取整棵 ds 子树,全部回来后 splitByCategory 分发到 5 段。 + // 多源异步汇总:每个源(TM / GS·项目根直挂)按 confType 取整棵 ds 子树,全部回来后 splitByCategory 分 5 段。 auto acc = std::make_shared>(); - auto remaining = std::make_shared(tmIds.size()); + auto remaining = std::make_shared(sources.size()); auto finish = [acc, generation, myGen, lastSourceRows, refreshAnalysis]() { if (*generation != myGen) return; // 已被更新的勾选批次取代→丢弃陈旧结果 *lastSourceRows = *acc; // 全部对象树 ds 作分析数据源 refreshAnalysis(); // splitByCategory→5段 + 合并三维体/切片 + dim2D→col2D }; - for (const QString& tm : tmIds) { + for (const geopro::data::DataSource& src : sources) { + // 第3参 confType:1=GS/项目根(直挂 ds),2=TM(测线下 ds)——透传给 loadRowsAsync(spec §6)。 geopro::data::NavRequest* req = projectRepo.loadRowsAsync( - nav.currentProjectId().toStdString(), tm.toStdString(), 2, 3, 1, 100000); + nav.currentProjectId().toStdString(), src.id, src.confType, 3, 1, 100000); QObject::connect(req, &geopro::data::NavRequest::done, drawer, [acc, remaining, finish](const QVariant& v) { auto page = qvariant_cast(v);