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:请求删除本行。

参数:
  • parent (QWidget | None)

  • columns (list[dict])

  • field_op_map (dict)

  • operators (dict)

  • field_choices_map (dict | None)

  • field_name (str | None)

  • operator (str | None)

value_changed
structure_changed
remove_requested
set_columns(columns)[源代码]

更新可用字段列表(视图切换时由 FilterBar 调用),重建字段下拉。

参数:

columns (list[dict])

返回类型:

None

get_condition()[源代码]

返回标准化条件 {field: {value, operator}},无效则返回 None。

注意:区间(between)操作符的值存于 value_edit_min/max,单值框为空, 因此 not value 的跳过判定仅适用于非区间、非无值操作符。

返回类型:

dict | None

to_condition_dict()[源代码]

返回列表形式 ``{field, operator, value}``(供保存 / 加载使用)。

返回类型:

dict | None

row_data()[源代码]

返回与原 query_view 行字典同键的**持久**字典,便于迁移期最小改动接入。

返回的字典在控件生命周期内保持稳定引用,迁移期 query_view 的快筛/保存逻辑 可直接对其中的 _is_manual / _quick_filter_button 等标记做增删改并持久化。

返回类型:

dict

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() )