certflow.widgets.filter_row module¶
单条筛选行控件(通用可复用 UI 构件,归 widgets 包)。
从 query_view._add_filter_row 系列方法抽取为独立控件:字段下拉 + 操作符下拉 +
值输入栈(单值 / 区间 / 日期 / 枚举)+ 删除按钮。产出标准化条件
{field: {value, operator}}。
设计要点(对齐 docs/BLUEPRINT.md §五 wf5):
数据源无关:exact 字段的下拉选项加载、日期选择器、主题 / 样式均通过 构造回调注入,组件本身不依赖任何具体视图或 Controller。
统一条件契约:
get_condition()返回{field: {value, operator}}, 与query_view.get_filters既有格式一致,便于等价替换。row_data() 桥接:返回与原
query_view行字典同键的字典,使既有快筛 / 保存加载逻辑可最小改动地迁移到本组件(见 §1.7 第 4 步)。
- class certflow.widgets.filter_row.FilterRowWidget(parent=None, *, columns, field_op_map, operators, field_choices_map=None, is_dark_theme_fn=None, load_combo_values_fn=None, open_date_picker_fn=None, date_button_style_fn=None, field_name=None, operator=None, value=None)[源代码]¶
基类:
QWidget单条筛选条件行。
- 信号:
value_changed:值输入框变化(应触发防抖搜索)。 structure_changed:字段 / 操作符变化(应触发快筛脱离,不触发搜索)。 remove_requested:请求删除本行。
- 参数:
- value_changed¶
- structure_changed¶
- remove_requested¶
- get_condition()[源代码]¶
返回标准化条件
{field: {value, operator}},无效则返回 None。注意:区间(between)操作符的值存于
value_edit_min/max,单值框为空, 因此not value的跳过判定仅适用于非区间、非无值操作符。- 返回类型:
dict | None
- row_data()[源代码]¶
返回与原
query_view行字典同键的**持久**字典,便于迁移期最小改动接入。返回的字典在控件生命周期内保持稳定引用,迁移期 query_view 的快筛/保存逻辑 可直接对其中的
_is_manual/_quick_filter_button等标记做增删改并持久化。- 返回类型:
- staticMetaObject = PySide6.QtCore.QMetaObject("FilterRowWidget" inherits "QWidget": Methods: #33 type=Signal, signature=value_changed() #34 type=Signal, signature=structure_changed() #35 type=Signal, signature=remove_requested() )¶