certflow.widgets.filter_bar module

筛选条容器(通用可复用 UI 构件,归 widgets 包)。

管理 N 个 FilterRowWidget + 「添加条件」按钮 + 可选快查框, 对外发出 conditions_changed 信号,并汇总为统一条件契约 {field: {value, operator}}

设计要点(对齐 docs/BLUEPRINT.md §五 wf5):

  • 数据源无关:行所需的下拉加载 / 日期选择 / 样式回调通过构造参数透传给 每个 FilterRowWidget;容器本身不触碰具体视图或 Controller。

  • 统一条件契约get_conditions()query_view.get_filters 输出格式一致, 便于等价替换。

  • 快查框:可选 QuickSearch``(复用导入对话框的模糊匹配交互),选中项通过 ``quick_search_callback 回调上抛,由宿主视图决定如何定位(如级联下拉 / 内存过滤)。

class certflow.widgets.filter_bar.FilterBar(parent=None, *, columns=None, field_op_map=None, field_choices_map=None, operators=None, is_dark_theme_fn=None, load_combo_values_fn=None, open_date_picker_fn=None, date_button_style_fn=None, grid_cols=2, show_quick_search=False, quick_search_placeholder='', quick_search_callback=None, quick_search_typing_callback=None, show_preset_selector=False, presets=None, preset_changed_callback=None)[源代码]

基类:QWidget

筛选条件容器。

参数:
  • parent (QWidget | None)

  • columns (list[dict] | None)

  • field_op_map (dict | None)

  • field_choices_map (dict | None)

  • operators (dict | None)

  • grid_cols (int)

  • show_quick_search (bool)

  • quick_search_placeholder (str)

  • show_preset_selector (bool)

  • presets (list | None)

conditions_changed
set_columns(columns)[源代码]

更新可用字段列表(视图切换时调用),并刷新所有行的字段下拉。

参数:

columns (list[dict])

返回类型:

None

add_row(field_name=None, operator=None, value=None)[源代码]

添加一行筛选条件,返回新建的 FilterRowWidget

返回类型:

FilterRowWidget

remove_row(widget)[源代码]

按控件引用删除一行(供宿主视图快筛逻辑调用)。

参数:

widget (QWidget)

返回类型:

None

clear_rows()[源代码]

清空所有筛选行。

返回类型:

None

ensure_at_least_one_row()[源代码]

保证至少有一个空筛选行。

返回类型:

None

rows_data()[源代码]

返回所有行的 row_data 字典列表(迁移期兼容)。

返回类型:

list[dict]

rows()[源代码]
返回类型:

list[FilterRowWidget]

get_conditions()[源代码]

汇总为统一条件契约 {field: {value, operator}}

返回类型:

dict

collect_conditions()[源代码]

汇总为列表形式 ``[{field, operator, value}, ...]``(保存 / 加载用)。

返回类型:

list[dict]

find_row_by_field(field_name)[源代码]

查找指定字段的筛选行。

参数:

field_name (str)

返回类型:

FilterRowWidget | None

set_quick_search_items(items)[源代码]

填充快查框候选项(editable + completer 模糊匹配)。

参数:

items (list[str])

返回类型:

None

set_quick_search_placeholder(text)[源代码]

设置快查框占位提示(随 active preset 变化)。

参数:

text (str)

返回类型:

None

set_presets(presets)[源代码]

动态更新预设列表(视图切换时)。

参数:

presets (list)

返回类型:

None

staticMetaObject = PySide6.QtCore.QMetaObject("FilterBar" inherits "QWidget": Methods:   #33 type=Signal, signature=conditions_changed() )
active_preset()[源代码]

返回当前选中的预设 dict(无预设选择器时返回 None)。

返回类型:

dict | None