gaozheng
|
7d0e72dec2
|
feat(ui): 全局下拉空态优化 EmptyAwareComboBox(占位+暂无数据,对齐Arco)
下拉无数据时原为空白框+空弹窗,不优雅。新增统一空态感知下拉对齐原版 Arco ASelect:
- EmptyAwareComboBox(QComboBox 子类):showPopup 无真实项时临时插禁用灰色「暂无数据」
条(关闭即移除,不污染取值),仍可点开;占位经 setPlaceholderText(currentIndex=-1)显示
- FormKit 加 comboBox(placeholder) 统一入口
- 全局替换全部 37 处 new QComboBox:7 处数据驱动给占位(白化文件/异常类型/反演模型/
导入类型脚本/导出模板),30 处仅换类保留自动选首项语义(逐处判断,不破坏取值)
build all 绿,341/341。
|
2026-06-23 17:35:54 +08:00 |
gaozheng
|
3dfe8b54f5
|
feat(detail): 色阶编辑器另存覆盖 + 散点模板库可用(1:1)
- IColorTemplateRepository/Api 加 updateLvlTemplate(PUT /business/lvlTemplate
{id,templateName,properties}),对照原版 updateLvlTemplate
- ColorScaleConfigDialog 另存为改自定义弹窗:名称+「覆盖原模板」复选(仅 lvlTemplateId
非空可勾)→勾选 updateLvlTemplate / 否则 saveLvlTemplate;ctor 增 lvlTemplateId(默认空)
- 散点路径接通模板库:工厂给 Scatter 视图注入 colorTplRepo,构造色阶编辑器传
colorTplRepo+projectId+data_.templateId→另存/打开/覆盖可用(原 nullptr 禁用)
- 3D 体色阶编辑器(main.cpp)及网格(GridDataChartView)用默认空 templateId,行为不变
build all 绿,336/336。
|
2026-06-23 14:08:35 +08:00 |
gaozheng
|
75cf8d40ba
|
fix(detail): 反演动态表单支持11种控件+必填校验 + grid按钮视觉 + 色阶templateId
- InversionFormDialog 动态表单不再一律下拉:复用项目既有 parseEditableForm +
DynamicFormEditor(与对象/结构编辑同款),按 displayComponentType 渲染 11 种控件
(文本/只读/复选/下拉/日期/时间/日期时间/多行/数字按dataType+limit/树选降级/步进)
+ requiredType 必填校验/只读禁用。生成视电阻率纯select行为不变。
删除被孤立的 InversionFormParse + 其测试。
- grid 反演按钮行:左"电法列表"radio + 右蓝色主按钮 space-between(仅dd_grid)
- 色阶保存带 templateId(ScatterPayload+DTO捕获色阶detail顶层templateId,measurement
与反演原数据两路;空可省,对照原版)
后续项(未动,与3D共享风险):ColorScaleConfigDialog 另存覆盖/散点模板库可用。
build all 绿,336/336。GPR/金字塔/.superpowers WIP 未碰。
|
2026-06-23 12:44:42 +08:00 |
gaozheng
|
c21226a3d7
|
fix(detail): measurement 对话框/工具条视觉返工对齐原版
以原版 web 为准返工 measurement 散点交互视觉:
- 数据过滤:1000px;左直方图(hover柱变红+tooltip)+右信息区(数值范围/占比/原始点数/
当前点数橙色高亮)+底部双手柄范围滑块(新增RangeSlider)+计算分布/重置;min/max输入
最大在上最小在下;三方联动(输入↔滑块↔直方图)
- 另存为(RawData):280px、标题"数据另存为"、确认/取消
- 色阶/另存/过滤成功 toast
- 信息面板 A红/B蓝/M绿/N橙(#F4B008);tooltip"查看散点属性"/"散点的点选"
- X/Y/V/值类型下拉固定宽 120/160/160/120;无高程禁用 X/Y
- 导出置工具条最右(页头HeaderAction跨ddCode静态)
API 字段未动。build all 绿。
|
2026-06-23 11:53:13 +08:00 |
gaozheng
|
4a1fecb149
|
fix(detail): inversion 处理类对话框视觉返工对齐原版(白化/网格化/滤波/另存)
之前用客户端 FormKit 外壳导致与原版 web modal 系统性不一致,以原版为准返工:
- 白化:550px、第2项"白化文件"、边界扩展改文本框、确认/取消顺序、标签右对齐
- 网格化:步1 500/步2 800px、网格参数/数据值设置双分组栅格、"数据值保存为"、
补恢复默认值按钮 + 间距↔点数双向联动 + 分项校验
- 滤波:900px 左树右设置双卡片、"忽略"、矩阵行列表头 + 奇偶校验
- 另存为(Inversion):标题"另存为新的网格数据"、400px、默认名"网格数据1"、确认/取消
- 工具条:异常标注/自动标注/另存为、原数据另存为 右对齐
API 端点/请求体字段未动(已 1:1)。build all + test 324/324 绿。
|
2026-06-23 11:31:14 +08:00 |
gaozheng
|
ec4a7e81ef
|
feat(detail): 补全详情视图剩余交互(框选/绘形/直方图/行级可见性/富文本/白化)
继续数据集详情视图 100% 复刻,补齐上批后置/降级的 6 项。
- M2 measurement 列表行级可见性:DataTableView 载荷驱动可交互开关列
(仅 measurement 启用),行级 popconfirm → saveDisplayStatus
- M3 数据过滤直方图:新增自绘 ScatterHistogramView,分布柱 + 选区高亮 +
与 min/max 输入联动
- M14 散点框选:ScatterMarqueePicker 橡皮筋框选 + ScatterPlotItem 选中高亮,
显示/隐藏对选中子集操作
- I9 异常图上绘形:ContourDrawTool 在等值面上交互绘制 点/线/面/文字
(先弹窗填类型/名称→图上绘制→newException),坐标表保留为兜底
- I14 富文本描述:DescriptionPanel 升级富文本(粗体/斜体/下划线/字色/字号/
标题/列表) + QuillDelta 与 Quill Delta 常见格式往返(非 Quill 不可字节级1:1)
- I3 白化 tmObjectId:openWhitening 经 getDsObjectDetail 取 structParentId
修复 ScatterHistogram 命名冲突(widget 改名 ScatterHistogramView,与
ScatterDataOps 的分箱结构 struct 区分),desktop 目标恢复可链接。
抽纯函数 ChartPickGeometry/QuillDelta/buildScatterHistogram + 单测。
build app + test 全绿,318/318 通过。
|
2026-06-23 10:33:14 +08:00 |
gaozheng
|
12813bd8d0
|
feat(detail): 数据集详情视图交互复刻(measurement/inversion/grid)
对照原版 web 1:1 复刻数据集详情视图的写操作交互,补齐既有视图的全部
可交互能力。
基础设施
- 新增写操作命令仓储 IDatasetCommandRepository + ApiDatasetCommandRepository
(26 个写/查接口,端点逐字对照原版 apis),回调式异步沿用 ApiColorTemplateRepository 模式
- 写操作注入链平行 setColorTemplateRepo:main→Panel→Page→DetailViewFactory→视图,
透传 cmdRepo + dsIdGetter
- 新增共享对话框 InversionFormDialog/SaveAsDialog/ScatterFilterDialog/GridWizardDialog/
WhiteningDialog/FilterDialog/ExceptionDialog/ExceptionDetailDialog/AutoAnnotationDialog
- 纯函数 InversionFormParse/ScatterDataOps/InversionProcessOps/ContourSimplify + 单测
measurement(M1-M13):可见性持久化、数据过滤、X/Y/V轴、值类型、色阶配置、
生成视电阻率、反演运算、另存为、导出DAT、信息点选
inversion 网格(I1-I15):网格化向导、白化、滤波、等值线提示、简化容差(真生效)、
异常增删改查+定位、自动标注、描述保存、另存为
inversion 原数据(O1-O3) + grid 反演(G1,functionList 驱动)
后置/降级(台账 §6.4):M14框选、M2行级可见性、M3过滤直方图、I9图上绘形、
I14富文本(Qt无Quill)、I3白化tmObjectId透传
测试 285/285 通过
|
2026-06-23 09:21:37 +08:00 |
gaozheng
|
a00aeb9a56
|
feat(dataset-detail): 按类型渲染引擎 + inversion 迁移 + dd_ert_measurement_data 详情
将数据集详情从硬编码 ERT 反演重构为通用「ddCode→页签→视图kind」渲染引擎,
把已验收的 dd_inversion_data 迁入新引擎(渲染零变化),并在引擎上实现
dd_ert_measurement_data(ERT原始数据)详情。
引擎:
- 策略声明页签:IDatasetChartStrategy::tabs()→vector<TabSpec{title,ViewKind,
loaderKey,lazy}> 取代 hasGridPhase();控制器通用化(datasetOpened/loadTab/
tabReady),按页签槽位保留 abort-and-replace + 句柄身份比对 + deleteLater 三件套
- 单一异步句柄 DetailLoad/ApiDetailLoad(QVariant 载荷),仓储 loadAsync(loaderKey,
dsId) 扁平分派;删 ChartLoad/GridLoad/loadChartAsync/loadGridAsync/DatasetLoads.hpp
- 视图 IDetailView{widget,setPayload(QVariant)} + DetailViewFactory 按 ViewKind 实例化;
载荷 Scatter/Contour/TablePayload(core/model/detail/DetailPayloads.hpp)
- Page 按 TabSpec 建页签 + 通用 lazy;inversion 散点/网格迁入,渲染代码未改
dd_ert_measurement_data(③散点伪剖面 + 列表):
- 散点复用 RawDataChartView/ScatterPlotItem:x=斜距/y=伪深度(负向)/色=视电阻率,
连续 cauto(含负离群值),colorBar 取自 colorGradation businessCode=R0&type=3(混合
hex+rgba/AlphaScale::Unit);电极灰菱形(#BEBEBE实心+白描边 size16);A/B/M/N 与电极
浮动 hover;数据点尺寸对齐原版 12px;色阶底部横向(与反演一致)
- 通用 DataTableView(gridHeaderDisplay/filedList+rowList,均衡等宽列+居中+隐藏/显示
开关列);MeasurementDto 解析(散点位置数组 + vmap 摊平)
- 工具条视觉 1:1(信息/框选/显示/隐藏/数据过滤/x·y·v·计算方法下拉/色阶配置/生成视电阻
率/反演运算/另存为);显示隐藏+x/y 下拉轻交互,其余占位
测试 75→138 全绿。Phase0 真实响应夹具 tests/fixtures/dd/*。
|
2026-06-13 10:51:24 +08:00 |
gaozheng
|
10072eb4b3
|
feat(dataset-detail+app): 数据集树/按根分页 + 暗色主题保真 + 详情图保真 + 桌面日志崩溃捕获
本分支累积的数据集详情与桌面端健壮性工作(多轮迭代,已逐项实测/用户验收),一次性提交。
数据集列表树化 + 按根分页:
- 原版数据列表为 el-table 树(派生数据按 sourceShowParentId 挂源「原始数据」下);
DsRow 加 parentId,parseDsRows 解析 sourceShowParentId(回退 parentId),
DatasetListPanel 由 QListWidget 改建 QTreeWidget(卡片委托泛化到 QAbstractItemView)。
- 后端 data/page 按扁平 DS 分页 → 改为客户端按「第一层节点(根)」分页:
loadRowsAsync 加 pageSize,selectObject 一次取全,新增 emitNextDataRootPage 按根切页(5根/页),
loadMoreData 改同步切页;main.cpp 加载更多计数改按根。
暗色主题保真(浅色保持与原版 1:1,仅暗色改 token):
- 新增 ChartTheme::applyChartPlotTheme:按 isDarkTheme() 设 QwtPlot 画布/轴字/网格/零线配色,连 ThemeManager::changed 热切换。
- ColorBarWidget、LoadingOverlay 底色/蒙板/文字同步跟随主题。
详情图渲染保真:
- colorBar alpha 标度修复(混合 hex+rgba 格式,rgba alpha 为 0–1,Bit255→Unit)。
- 散点 cauto 归一化(ColorMapService.setDataRange 解耦色阶形状与数据归一化)。
- 散点 hover 提示(ScatterHoverTip,X/Y/值 3 位小数,canvas mouseTracking)。
- 详情页签用数据名命名。
桌面端日志 + 崩溃捕获:
- Logging:滚动日志 + MiniDump 崩溃捕获 + VEH 抛点符号化;main.cpp GuardedApplication::notify 顶层异常护栏。
- 根 CMakeLists Release 产出 PDB(/Zi /DEBUG);ColorMapService NaN/Inf 守卫。
测试 116→122 全绿(+ParseDsRowsParentIdForTree / DataPaginatesByRootNodeNotFlatCount / 散点/colormap 回归)。
|
2026-06-12 19:00:32 +08:00 |
gaozheng
|
78f96dbc08
|
fix(review): 修 cpp-review HIGH/MEDIUM —散点ys越界/colorSvc析构泄漏/QwtPlot autoDelete注释/控制器catch(...)防busy死锁 + 清死代码simplifyInPlace/simplifyTol + 填充等比限幅 + DTO行数校验+枚举钳制 + ContourLine.level默认NaN
|
2026-06-11 18:59:19 +08:00 |
gaozheng
|
03a6622dea
|
fix(ui): 滚轮缩放并入LivePanner并消费事件(不再触发外层滚动条) + 网格页底部改QSplitter(去固定200px,两页高度解耦/不溢出)
|
2026-06-11 17:22:39 +08:00 |
gaozheng
|
1054c227e1
|
perf/fix(ui): 详情懒加载(双击只拉散点~0.8s,网格4s推迟) + 实时拖动平移(LivePanner替换像素抓取) + 横纵网格线
|
2026-06-11 16:33:35 +08:00 |
gaozheng
|
525c123211
|
feat(ui): 原数据散点锁定 x:y 真实比尺(QwtPlotRescaler aspect=1, Expanding)
|
2026-06-11 16:14:37 +08:00 |
gaozheng
|
cf47314500
|
fix(ui): 散点 滚轮缩放方向反转(上滚=放大)+放开最小宽度(随面板收缩) + 色阶条居中74%宽(非满宽,对齐原版)
|
2026-06-11 16:09:00 +08:00 |
gaozheng
|
1f28505227
|
fix(ui): 原数据散点 白底+散点项关联xTop轴(修x压缩)+过原点零线 + 色阶条等宽色带/深色文字/白底
|
2026-06-11 15:55:32 +08:00 |
gaozheng
|
e405fc1565
|
feat(ui): 原数据散点视图(QwtPlot x顶轴+Panner/Magnifier+连续色阶+方块散点+独立色阶条)
- ColorBarWidget:独立 QWidget 色阶条,水平离散色带 + 断点刻度,固定高 36px,
作为 QwtPlot 兄弟 widget 布局在图表下方,不进 Qwt 坐标系(不随缩放移动)。
- ScatterPlotItem:QwtPlotItem 子类,每点画固定 7px 方块(kHalfSide=3.5px),
白色描边(1px),颜色由 ColorMapService::colorAtContinuous 连续插值决定。
- RawDataChartView:plotArea 换成 QwtPlot,x 轴顶部(xTop)、关闭 xBottom、yLeft 正常;
QwtPlotPanner(左键拖动平移)+ QwtPlotMagnifier(滚轮缩放);
setData 时重建 ColorMapService + ScatterPlotItem,按数据包围盒设轴范围;
独立色阶条随 setData 更新。
|
2026-06-11 15:40:43 +08:00 |
gaozheng
|
7808b8422a
|
feat(ui): 数据集详情三层UI骨架(下划线页签+原数据/网格各自工具条+网格页底部异常列表/描述)
- 新建 DescriptionPanel:只读 QTextEdit,供网格数据底部「描述」页签使用
- 新建 RawDataChartView:工具条(网格/色阶配置/图形类型ComboBox/另存为) + 图表占位(stretch) + 色阶占位(36px)
- 新建 GridDataChartView:工具条(网格/色阶配置/白化/滤波/显示开关/简化容差滑块/异常标注/自动标注/另存为) + 图表占位(stretch) + 色阶占位(36px) + 底部200px双页签(异常列表/描述)
- 重写 DatasetDetailPage:用 buildTabbedPanel 做「原数据/网格数据」下划线页签 + 右侧「导出」HeaderAction
- 删除 DatasetChartView(已被 RawDataChartView/GridDataChartView 替代)
- CMakeLists:注册新 .cpp,移除 DatasetChartView,条件链接 qwt 目标
|
2026-06-11 15:04:34 +08:00 |