diff --git a/web_group_expand/README.rst b/web_group_expand/README.rst index c84667e2a..99f1c4561 100644 --- a/web_group_expand/README.rst +++ b/web_group_expand/README.rst @@ -7,7 +7,7 @@ Group Expand Buttons !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - !! source digest: sha256:1e707b0c988c388ee8ae35b00354343f1e961eb524838d3fd56348df767e4ac8 + !! source digest: sha256:0fb42d09f0995520749d0cb55db14e5ed47e9e037598f2a9ac9e5534887e0666 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png @@ -72,6 +72,7 @@ Contributors * Jan Verbeek * Manuel Calero * Alvaro Estebanez (brain-tec AG) +* Mayank Patel Maintainers ~~~~~~~~~~~ diff --git a/web_group_expand/__manifest__.py b/web_group_expand/__manifest__.py index 41f808503..9931860e9 100644 --- a/web_group_expand/__manifest__.py +++ b/web_group_expand/__manifest__.py @@ -1,7 +1,7 @@ { "name": "Group Expand Buttons", "category": "Web", - "version": "15.0.1.0.0", + "version": "16.0.1.0.0", "license": "AGPL-3", "author": "OpenERP SA, " "AvanzOSC, " @@ -13,10 +13,8 @@ "depends": ["web"], "assets": { "web.assets_backend": [ - "/web_group_expand/static/src/js/web_group_expand.esm.js", - ], - "web.assets_qweb": [ - "/web_group_expand/static/src/xml/expand_buttons.xml", + "/web_group_expand/static/src/xml/list_controller.xml", + "/web_group_expand/static/src/js/list_controller.esm.js", ], }, } diff --git a/web_group_expand/readme/CONTRIBUTORS.rst b/web_group_expand/readme/CONTRIBUTORS.rst index 3675a6e32..ef1985a3d 100644 --- a/web_group_expand/readme/CONTRIBUTORS.rst +++ b/web_group_expand/readme/CONTRIBUTORS.rst @@ -5,3 +5,4 @@ * Jan Verbeek * Manuel Calero * Alvaro Estebanez (brain-tec AG) +* Mayank Patel diff --git a/web_group_expand/static/description/index.html b/web_group_expand/static/description/index.html index 0f6139603..75812de4c 100644 --- a/web_group_expand/static/description/index.html +++ b/web_group_expand/static/description/index.html @@ -367,7 +367,7 @@ ul.auto-toc { !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! source digest: sha256:1e707b0c988c388ee8ae35b00354343f1e961eb524838d3fd56348df767e4ac8 +!! source digest: sha256:0fb42d09f0995520749d0cb55db14e5ed47e9e037598f2a9ac9e5534887e0666 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->

Beta License: AGPL-3 OCA/web Translate me on Weblate Try me on Runboat

When grouping a list by a field, this module adds two buttons to expand or @@ -416,6 +416,7 @@ If you spotted it first, help us to smash it by providing a detailed and welcome

  • Jan Verbeek <jverbeek@therp.nl>
  • Manuel Calero <manuelcalerosolis@gmail.com>
  • Alvaro Estebanez (brain-tec AG) <alvaro.estebanez@bt-group.com>
  • +
  • Mayank Patel <mayankpatel3555@gmail.com>
  • diff --git a/web_group_expand/static/src/js/list_controller.esm.js b/web_group_expand/static/src/js/list_controller.esm.js new file mode 100644 index 000000000..0ef08270b --- /dev/null +++ b/web_group_expand/static/src/js/list_controller.esm.js @@ -0,0 +1,59 @@ +/** @odoo-module */ + +import {patch} from "@web/core/utils/patch"; +import {ListController} from "@web/views/list/list_controller"; + +patch(ListController.prototype, "web_group_expand.ListController", { + async expandAllGroups() { + // We expand layer by layer. So first we need to find the highest + // layer that's not already fully expanded. + let layer = this.model.root.groups; + while (layer.length) { + const closed = layer.filter(function (group) { + return group.isFolded; + }); + if (closed.length) { + // This layer is not completely expanded, expand it + await layer.forEach((group) => { + group.isFolded = false; + }); + break; + } + // This layer is completely expanded, move to the next + layer = _.flatten( + layer.map(function (group) { + return group.list.groups || []; + }), + true + ); + } + await this.model.root.load(); + this.model.notify(); + }, + + async collapseAllGroups() { + // We collapse layer by layer. So first we need to find the deepest + // layer that's not already fully collapsed. + let layer = this.model.root.groups; + while (layer.length) { + const next = _.flatten( + layer.map(function (group) { + return group.list.groups || []; + }), + true + ).filter(function (group) { + return !group.isFolded; + }); + if (!next.length) { + // Next layer is fully collapsed, so collapse this one + await layer.forEach((group) => { + group.isFolded = true; + }); + break; + } + layer = next; + } + await this.model.root.load(); + this.model.notify(); + }, +}); diff --git a/web_group_expand/static/src/js/web_group_expand.esm.js b/web_group_expand/static/src/js/web_group_expand.esm.js deleted file mode 100644 index ab85b503e..000000000 --- a/web_group_expand/static/src/js/web_group_expand.esm.js +++ /dev/null @@ -1,91 +0,0 @@ -/** @odoo-module */ - -import ListController from "web.ListController"; -import ListRenderer from "web.ListRenderer"; -import core from "web.core"; - -const qweb = core.qweb; - -ListController.include({ - start: function () { - this.$expandGroupButtons = $(qweb.render("web_group_expand.Buttons")); - this.$expandGroupButtons - .find("#oe_group_by_expand") - .on("click", this.expandAllGroups.bind(this)); - this.$expandGroupButtons - .find("#oe_group_by_collapse") - .on("click", this.collapseAllGroups.bind(this)); - return this._super.apply(this, arguments); - }, - - renderButtons: function () { - this._super.apply(this, arguments); - this.$expandGroupButtons.toggleClass("o_hidden", !this.renderer.isGrouped); - this.$buttons.append(this.$expandGroupButtons); - }, - - expandAllGroups: function () { - // We expand layer by layer. So first we need to find the highest - // layer that's not already fully expanded. - let layer = this.renderer.state.data; - while (layer.length) { - const closed = layer.filter(function (group) { - return !group.isOpen; - }); - if (closed.length) { - // This layer is not completely expanded, expand it - this._toggleGroups(closed); - break; - } - // This layer is completely expanded, move to the next - layer = _.flatten( - layer.map(function (group) { - return group.data; - }), - true - ); - } - }, - - collapseAllGroups: function () { - // We collapse layer by layer. So first we need to find the deepest - // layer that's not already fully collapsed. - let layer = this.renderer.state.data.filter(function (group) { - return group.isOpen; - }); - while (layer.length) { - const next = _.flatten( - layer.map(function (group) { - return group.data; - }), - true - ).filter(function (group) { - return group.isOpen; - }); - if (!next.length) { - // Next layer is fully collapsed, so collapse this one - this._toggleGroups(layer); - break; - } - layer = next; - } - }, - - _toggleGroups: function (groups) { - const self = this; - const defs = groups.map(function (group) { - return self.model.toggleGroup(group.id); - }); - $.when(...defs).then( - this.update.bind(this, {}, {keepSelection: true, reload: false}) - ); - }, -}); - -ListRenderer.include({ - updateState: function () { - const res = this._super.apply(this, arguments); - $("nav.oe_group_by_expand_buttons").toggleClass("o_hidden", !this.isGrouped); - return res; - }, -}); diff --git a/web_group_expand/static/src/xml/expand_buttons.xml b/web_group_expand/static/src/xml/expand_buttons.xml deleted file mode 100644 index 68b8e2ba0..000000000 --- a/web_group_expand/static/src/xml/expand_buttons.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - diff --git a/web_group_expand/static/src/xml/list_controller.xml b/web_group_expand/static/src/xml/list_controller.xml new file mode 100644 index 000000000..743b8aa35 --- /dev/null +++ b/web_group_expand/static/src/xml/list_controller.xml @@ -0,0 +1,23 @@ + + + + + +