Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
154 changes: 154 additions & 0 deletions web_filter_header_button/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

=============
Filter Button
=============

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:ca8b5898e3d8f183bcf7575688c5858938135a593f03f422767e69367be33984
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
:target: https://github.com/OCA/web/tree/19.0/web_filter_header_button
:alt: OCA/web
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/web-19-0/web-19-0-web_filter_header_button
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=19.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module allows to add some selected filters as buttons in the header
control panel.

**Table of contents**

.. contents::
:local:

Use Cases / Context
===================

This developement is aimed to ease the filter access for touch screens
users.

Configuration
=============

To show a filter in the header of the views, it should have the a
``context`` attribute with the key ``shown_in_panel``.

.. code:: xml

<filter
string="My filter"
name="my_filter"
domain="[('active', '!=', False)]"
context="{'shown_in_panel': True}"
>

This will show the filter in the header with its name. You can customize
the button adding an icon or with a custom name passing an object to
that key:

.. code:: python

{'shown_in_panel': {'icon': 'fa-thumbs-up', 'name': 'Ok'}}

You might be interested in leaving just the icon. In that case, set an
empty string on the ``name`` property:

.. code:: python

{'shown_in_panel': {'icon': 'fa-thumbs-up', 'name': ''}}

You could also want to add a hotkey. In such case add the ``hotkey``
property:

.. code:: python

{'shown_in_panel': {'icon': 'fa-thumbs-up', 'hotkey': 'F'}}

You can show filter, groups or even favorites.

Usage
=====

In a search view with header filter buttons, you'll see a filter icon
(funnel). Use it to unfold the filters.

There's a demo implementation in ``Apps`` and you can play around
following the *Configure* section.

Known issues / Roadmap
======================

- Group filters by kind
- As we use the ``context`` attribute, the inheritance could be limiting
in some cases. Keep it in mind or use
``base_view_inheritance_extension`` if you want to use proper context
inheritance.
- Another nice to have would be to be able to hide the filters in the
filter list to be able to show them just in the header, although
there's not a straigh forward way to do it and it could lead to side
effects.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/web/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/web/issues/new?body=module:%20web_filter_header_button%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Tecnativa

Contributors
------------

- `Tecnativa <https://tecnativa.com>`__

- David Vidal

- `Heliconia Solutions Pvt. Ltd. <https://www.heliconia.io>`__

- Bhavesh Heliconia

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/web <https://github.com/OCA/web/tree/19.0/web_filter_header_button>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
Empty file.
19 changes: 19 additions & 0 deletions web_filter_header_button/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Copyright 2024 Tecnativa - David Vidal
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Filter Button",
"version": "19.0.1.0.0",
"summary": "Show selected filters as buttons in the control panel",
"author": "Tecnativa, Odoo Community Association (OCA)",
"license": "AGPL-3",
"category": "Server UX",
"website": "https://github.com/OCA/web",
"depends": ["web"],
"data": [],
"demo": [
"demo/ir_module_module_view.xml",
],
"assets": {
"web.assets_backend": ["web_filter_header_button/static/src/**/*"],
},
}
24 changes: 24 additions & 0 deletions web_filter_header_button/demo/ir_module_module_view.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_module_filter" model="ir.ui.view">
<field name="model">ir.module.module</field>
<field name="inherit_id" ref="base.view_module_filter" />
<field name="arch" type="xml">
<filter name="installed" position="attributes">
<attribute
name="context"
>{'shown_in_panel': {'icon': 'fa-toggle-on', 'hotkey': 'i'}}</attribute>
</filter>
<filter name="not_installed" position="attributes">
<attribute
name="context"
>{'shown_in_panel': {'icon': 'fa-toggle-off', 'hotkey': 'u'}}</attribute>
</filter>
<filter name="state" position="attributes">
<attribute
name="context"
>{'group_by':'state', 'shown_in_panel': {'icon': 'fa-th-list', 'hotkey': 's'}}</attribute>
</filter>
</field>
</record>
</odoo>
14 changes: 14 additions & 0 deletions web_filter_header_button/i18n/it.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
13 changes: 13 additions & 0 deletions web_filter_header_button/i18n/web_filter_header_button.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
3 changes: 3 additions & 0 deletions web_filter_header_button/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"
32 changes: 32 additions & 0 deletions web_filter_header_button/readme/CONFIGURE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
To show a filter in the header of the views, it should have the a `context` attribute with the key `shown_in_panel`.

```xml
<filter
string="My filter"
name="my_filter"
domain="[('active', '!=', False)]"
context="{'shown_in_panel': True}"
>
```

This will show the filter in the header with its name. You can customize the button
adding an icon or with a custom name passing an object to that key:

```python
{'shown_in_panel': {'icon': 'fa-thumbs-up', 'name': 'Ok'}}
```

You might be interested in leaving just the icon. In that case, set an empty string on
the `name` property:

```python
{'shown_in_panel': {'icon': 'fa-thumbs-up', 'name': ''}}
```

You could also want to add a hotkey. In such case add the `hotkey` property:

```python
{'shown_in_panel': {'icon': 'fa-thumbs-up', 'hotkey': 'F'}}
```

You can show filter, groups or even favorites.
1 change: 1 addition & 0 deletions web_filter_header_button/readme/CONTEXT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This developement is aimed to ease the filter access for touch screens users.
5 changes: 5 additions & 0 deletions web_filter_header_button/readme/CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
- [Tecnativa](https://tecnativa.com)
- David Vidal

- [Heliconia Solutions Pvt. Ltd.](https://www.heliconia.io)
- Bhavesh Heliconia
1 change: 1 addition & 0 deletions web_filter_header_button/readme/DESCRIPTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This module allows to add some selected filters as buttons in the header control panel.
5 changes: 5 additions & 0 deletions web_filter_header_button/readme/ROADMAP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
- Group filters by kind
- As we use the `context` attribute, the inheritance could be limiting in some cases. Keep it in mind or use `base_view_inheritance_extension` if you want to use proper context inheritance.
- Another nice to have would be to be able to hide the filters in the filter list to be
able to show them just in the header, although there's not a straigh forward way to
do it and it could lead to side effects.
5 changes: 5 additions & 0 deletions web_filter_header_button/readme/USAGE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
In a search view with header filter buttons, you'll see a filter icon (funnel). Use it
to unfold the filters.

There's a demo implementation in `Apps` and you can play around following the *Configure*
section.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading