Files
gzth/header_search_panel/rng/search_view.rng
T
2025-12-19 15:37:59 +08:00

132 lines
4.8 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:a="http://relaxng.org/ns/annotation/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<!--
Handling of element overloading when inheriting from a basetemplate
-->
<rng:include href="odoo/addons/base/rng/common.rng"/>
<rng:define name="searchpanel">
<rng:element name="searchpanel">
<rng:ref name="overload"/>
<rng:optional>
<rng:attribute name="view_types"/>
</rng:optional>
<rng:optional>
<rng:attribute name="class"/>
</rng:optional>
<rng:zeroOrMore>
<rng:ref name="field" />
</rng:zeroOrMore>
</rng:element>
</rng:define>
<!-- 继承并扩展 filter 元素 -->
<rng:define name="filter" combine="choice">
<rng:optional>
<rng:attribute name="shownumber">
<rng:data type="boolean"/>
</rng:attribute>
</rng:optional>
</rng:define>
<!-- 头部搜索框内的快捷筛选,一个快捷筛选就是一行 -->
<rng:define name="quick_filter">
<rng:element name="quick_filter">
<!-- quick_filter筛选支持参数 -->
<!-- 自定义css -->
<rng:optional>
<rng:attribute name="class"/>
</rng:optional>
<!-- 当前快捷筛选行显示的标头 -->
<rng:optional>
<rng:attribute name="string"/>
</rng:optional>
<!-- 是否默认显示 -->
<rng:optional>
<rng:attribute name="invisible"/>
</rng:optional>
<!-- 扩展参数 -->
<rng:optional>
<rng:attribute name="options"/>
</rng:optional>
<!-- 各筛选之间的与或关系 -->
<rng:optional>
<rng:attribute name="and_or">
<rng:choice>
<rng:value>and</rng:value>
<rng:value>or</rng:value>
</rng:choice>
</rng:attribute>
</rng:optional>
<rng:zeroOrMore>
<!-- 支持的筛选标签 -->
<rng:choice>
<!-- 常规快捷筛选 -->
<rng:ref name="filter"/>
</rng:choice>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<!-- 自选时间筛选 -->
<rng:define name="select_date_filter">
<rng:element name="select_date_filter">
<!-- 自定义css -->
<rng:optional>
<rng:attribute name="class"/>
</rng:optional>
<!-- 默认显示还在显示更多里的 -->
<rng:optional>
<rng:attribute name="invisible"/>
</rng:optional>
<!-- 允许的选择字段,不填写则所有时间可选 -->
<rng:optional>
<rng:attribute name="allow_date_fields" />
</rng:optional>
</rng:element>
</rng:define>
<!-- list视图的头部搜索框 -->
<rng:define name="header_search">
<rng:element name="header_search">
<!-- 自定义css -->
<rng:optional>
<rng:attribute name="class"/>
</rng:optional>
<!-- header_search筛选支持参数 -->
<rng:zeroOrMore>
<!-- 支持的筛选标签 -->
<rng:choice>
<!-- 简单字段筛选 -->
<rng:ref name="field" />
<!-- 快捷筛选 -->
<rng:ref name="quick_filter" />
<!-- 自选时间筛选 -->
<rng:ref name="select_date_filter" />
</rng:choice>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define name="search">
<rng:element name="search">
<rng:ref name="overload"/>
<rng:optional>
<rng:attribute name="string"/>
</rng:optional>
<rng:zeroOrMore>
<rng:choice>
<rng:ref name="field"/>
<rng:ref name="group"/>
<rng:ref name="separator"/>
<rng:ref name="filter"/>
<rng:element name="newline">
<rng:empty/>
</rng:element>
<rng:ref name="searchpanel"/>
<!-- 添加顶部搜索 -->
<rng:ref name="header_search"/>
</rng:choice>
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:start>
<rng:choice>
<rng:ref name="search" />
</rng:choice>
</rng:start>
</rng:grammar>