diff --git a/kanban_sticky_state/README.rst b/kanban_sticky_state/README.rst new file mode 100644 index 000000000..6e579cc3d --- /dev/null +++ b/kanban_sticky_state/README.rst @@ -0,0 +1,46 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +Kanban Sticky State +==================== +Kanban Sticky State helps you to stick kanban heading at top and not move it + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +License +------- +Affero General Public License, Version 3 (AGPL v3) +(https://www.gnu.org/licenses/agpl-3.0-standalone.html) + +Credits +------- +* Developer: (V16) Jumana Jabin MP , Contact: odoo@cybrosys.com + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ diff --git a/kanban_sticky_state/__init__.py b/kanban_sticky_state/__init__.py new file mode 100644 index 000000000..e04f19438 --- /dev/null +++ b/kanban_sticky_state/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author:Jumana Jabin MP (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from . import models diff --git a/kanban_sticky_state/__manifest__.py b/kanban_sticky_state/__manifest__.py new file mode 100644 index 000000000..673cf2d98 --- /dev/null +++ b/kanban_sticky_state/__manifest__.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author:Jumana Jabin MP (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +{ + 'name': "Kanban Sticky State", + 'version': '16.0.1.0.0', + 'category': 'Extra Tools', + 'summary': """Kanban Sticky State helps you to stick kanban heading at + top and not move it.""", + 'description': """The sticky state in Kanban systems allows teams to track + and manage work items effectively, promote collaboration, and identify + bottlenecks or areas where tasks are getting stuck. By visualizing + the sticky state, teams can quickly identify tasks that require + attention and take appropriate action to keep the workflow flowing + smoothly.""", + 'author': 'Cybrosys Techno Solutions', + 'company': 'Cybrosys Techno Solutions', + 'maintainer': 'Cybrosys Techno Solutions', + 'website': "https://www.cybrosys.com", + 'depends': ['base_setup'], + 'data': [ + 'views/res_config_settings_views.xml', + ], + 'assets': { + 'web.assets_backend': [ + 'kanban_sticky_state/static/src/js/kanban_sticky_state.js', + 'kanban_sticky_state/static/src/css/kanban_sticky_state.css', + ], + }, + 'images': [ + 'static/description/banner.jpg', + ], + 'license': 'AGPL-3', + 'installable': True, + 'auto_install': False, + 'application': False, +} diff --git a/kanban_sticky_state/doc/RELEASE_NOTES.md b/kanban_sticky_state/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..8b83871a3 --- /dev/null +++ b/kanban_sticky_state/doc/RELEASE_NOTES.md @@ -0,0 +1,6 @@ +## Module + +#### 13.09.2023 +#### Version 16.0.1.0.0 +#### ADD + - Initial Commit for Kanban Sticky State diff --git a/kanban_sticky_state/models/__init__.py b/kanban_sticky_state/models/__init__.py new file mode 100644 index 000000000..52ed7b5a5 --- /dev/null +++ b/kanban_sticky_state/models/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author:Jumana Jabin MP (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from . import ir_http +from . import res_config_settings diff --git a/kanban_sticky_state/models/ir_http.py b/kanban_sticky_state/models/ir_http.py new file mode 100644 index 000000000..cc4f16d50 --- /dev/null +++ b/kanban_sticky_state/models/ir_http.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author:Jumana Jabin MP (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from odoo import models + + +class IrHttp(models.AbstractModel): + """Extends the 'ir.http' class to include the 'kanban_sticky_state' + parameter in session info. """ + _inherit = 'ir.http' + + def session_info(self): + """Overrides the session_info method to include the + 'kanban_sticky_state' parameter.""" + res = super(IrHttp, self).session_info() + res['is_kanban_sticky_state'] = self.env[ + 'ir.config_parameter'].sudo().get_param( + 'kanban_sticky_state.is_kanban_sticky_state') + return res diff --git a/kanban_sticky_state/models/res_config_settings.py b/kanban_sticky_state/models/res_config_settings.py new file mode 100644 index 000000000..57c8b498b --- /dev/null +++ b/kanban_sticky_state/models/res_config_settings.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2023-TODAY Cybrosys Technologies() +# Author:Jumana Jabin MP (odoo@cybrosys.com) +# +# You can modify it under the terms of the GNU AFFERO +# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. +# +# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE +# (AGPL v3) along with this program. +# If not, see . +# +############################################################################### +from odoo import fields, models + + +class ResConfigSettings(models.TransientModel): + """This model extends 'res.config.settings' to add a new configuration + parameter that controls the behavior of the Kanban view in Odoo. It + provides the option to make the Kanban view state sticky for each user.""" + _inherit = 'res.config.settings' + + is_kanban_sticky_state = fields.Boolean( + string="Kanban Sticky State", + config_parameter='kanban_sticky_state.is_kanban_sticky_state', + help="Set this field to True if you want the Kanban view state to be" + " sticky.When this option is enabled, the last state of the " + "Kanban view for each user will be remembered when they log in" + " again.") diff --git a/kanban_sticky_state/static/description/assets/icons/check.png b/kanban_sticky_state/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/kanban_sticky_state/static/description/assets/icons/check.png differ diff --git a/kanban_sticky_state/static/description/assets/icons/chevron.png b/kanban_sticky_state/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/icons/chevron.png differ diff --git a/kanban_sticky_state/static/description/assets/icons/cogs.png b/kanban_sticky_state/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/icons/cogs.png differ diff --git a/kanban_sticky_state/static/description/assets/icons/consultation.png b/kanban_sticky_state/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/kanban_sticky_state/static/description/assets/icons/consultation.png differ diff --git a/kanban_sticky_state/static/description/assets/icons/ecom-black.png b/kanban_sticky_state/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/icons/ecom-black.png differ diff --git a/kanban_sticky_state/static/description/assets/icons/education-black.png b/kanban_sticky_state/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/kanban_sticky_state/static/description/assets/icons/education-black.png differ diff --git a/kanban_sticky_state/static/description/assets/icons/hotel-black.png b/kanban_sticky_state/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/kanban_sticky_state/static/description/assets/icons/hotel-black.png differ diff --git a/kanban_sticky_state/static/description/assets/icons/license.png b/kanban_sticky_state/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/kanban_sticky_state/static/description/assets/icons/license.png differ diff --git a/kanban_sticky_state/static/description/assets/icons/lifebuoy.png b/kanban_sticky_state/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/kanban_sticky_state/static/description/assets/icons/lifebuoy.png differ diff --git a/kanban_sticky_state/static/description/assets/icons/manufacturing-black.png b/kanban_sticky_state/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/kanban_sticky_state/static/description/assets/icons/manufacturing-black.png differ diff --git a/kanban_sticky_state/static/description/assets/icons/pos-black.png b/kanban_sticky_state/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/icons/pos-black.png differ diff --git a/kanban_sticky_state/static/description/assets/icons/puzzle.png b/kanban_sticky_state/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/icons/puzzle.png differ diff --git a/kanban_sticky_state/static/description/assets/icons/restaurant-black.png b/kanban_sticky_state/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/icons/restaurant-black.png differ diff --git a/kanban_sticky_state/static/description/assets/icons/service-black.png b/kanban_sticky_state/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/kanban_sticky_state/static/description/assets/icons/service-black.png differ diff --git a/kanban_sticky_state/static/description/assets/icons/trading-black.png b/kanban_sticky_state/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/icons/trading-black.png differ diff --git a/kanban_sticky_state/static/description/assets/icons/training.png b/kanban_sticky_state/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/kanban_sticky_state/static/description/assets/icons/training.png differ diff --git a/kanban_sticky_state/static/description/assets/icons/update.png b/kanban_sticky_state/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/kanban_sticky_state/static/description/assets/icons/update.png differ diff --git a/kanban_sticky_state/static/description/assets/icons/user.png b/kanban_sticky_state/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/kanban_sticky_state/static/description/assets/icons/user.png differ diff --git a/kanban_sticky_state/static/description/assets/icons/wrench.png b/kanban_sticky_state/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/kanban_sticky_state/static/description/assets/icons/wrench.png differ diff --git a/kanban_sticky_state/static/description/assets/misc/categories.png b/kanban_sticky_state/static/description/assets/misc/categories.png new file mode 100644 index 000000000..bedf1e0b1 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/misc/categories.png differ diff --git a/kanban_sticky_state/static/description/assets/misc/check-box.png b/kanban_sticky_state/static/description/assets/misc/check-box.png new file mode 100644 index 000000000..42caf24b9 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/misc/check-box.png differ diff --git a/kanban_sticky_state/static/description/assets/misc/compass.png b/kanban_sticky_state/static/description/assets/misc/compass.png new file mode 100644 index 000000000..d5fed8faa Binary files /dev/null and b/kanban_sticky_state/static/description/assets/misc/compass.png differ diff --git a/kanban_sticky_state/static/description/assets/misc/corporate.png b/kanban_sticky_state/static/description/assets/misc/corporate.png new file mode 100644 index 000000000..2eb13edbf Binary files /dev/null and b/kanban_sticky_state/static/description/assets/misc/corporate.png differ diff --git a/kanban_sticky_state/static/description/assets/misc/customer-support.png b/kanban_sticky_state/static/description/assets/misc/customer-support.png new file mode 100644 index 000000000..79efc72ed Binary files /dev/null and b/kanban_sticky_state/static/description/assets/misc/customer-support.png differ diff --git a/kanban_sticky_state/static/description/assets/misc/cybrosys-logo.png b/kanban_sticky_state/static/description/assets/misc/cybrosys-logo.png new file mode 100644 index 000000000..cc3cc0ccf Binary files /dev/null and b/kanban_sticky_state/static/description/assets/misc/cybrosys-logo.png differ diff --git a/kanban_sticky_state/static/description/assets/misc/features.png b/kanban_sticky_state/static/description/assets/misc/features.png new file mode 100644 index 000000000..b41769f77 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/misc/features.png differ diff --git a/kanban_sticky_state/static/description/assets/misc/logo.png b/kanban_sticky_state/static/description/assets/misc/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/kanban_sticky_state/static/description/assets/misc/logo.png differ diff --git a/kanban_sticky_state/static/description/assets/misc/pictures.png b/kanban_sticky_state/static/description/assets/misc/pictures.png new file mode 100644 index 000000000..56d255fe9 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/misc/pictures.png differ diff --git a/kanban_sticky_state/static/description/assets/misc/pie-chart.png b/kanban_sticky_state/static/description/assets/misc/pie-chart.png new file mode 100644 index 000000000..426e05244 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/misc/pie-chart.png differ diff --git a/kanban_sticky_state/static/description/assets/misc/right-arrow.png b/kanban_sticky_state/static/description/assets/misc/right-arrow.png new file mode 100644 index 000000000..730984a06 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/misc/right-arrow.png differ diff --git a/kanban_sticky_state/static/description/assets/misc/star.png b/kanban_sticky_state/static/description/assets/misc/star.png new file mode 100644 index 000000000..2eb9ab29f Binary files /dev/null and b/kanban_sticky_state/static/description/assets/misc/star.png differ diff --git a/kanban_sticky_state/static/description/assets/misc/support.png b/kanban_sticky_state/static/description/assets/misc/support.png new file mode 100644 index 000000000..4f18b8b82 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/misc/support.png differ diff --git a/kanban_sticky_state/static/description/assets/misc/whatsapp.png b/kanban_sticky_state/static/description/assets/misc/whatsapp.png new file mode 100644 index 000000000..d513a5356 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/misc/whatsapp.png differ diff --git a/kanban_sticky_state/static/description/assets/modules/calendar.png b/kanban_sticky_state/static/description/assets/modules/calendar.png new file mode 100644 index 000000000..f2adce904 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/modules/calendar.png differ diff --git a/kanban_sticky_state/static/description/assets/modules/chatter.png b/kanban_sticky_state/static/description/assets/modules/chatter.png new file mode 100644 index 000000000..9de1176ad Binary files /dev/null and b/kanban_sticky_state/static/description/assets/modules/chatter.png differ diff --git a/kanban_sticky_state/static/description/assets/modules/custom.png b/kanban_sticky_state/static/description/assets/modules/custom.png new file mode 100644 index 000000000..05f58a9b2 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/modules/custom.png differ diff --git a/kanban_sticky_state/static/description/assets/modules/form.png b/kanban_sticky_state/static/description/assets/modules/form.png new file mode 100644 index 000000000..ec56f266e Binary files /dev/null and b/kanban_sticky_state/static/description/assets/modules/form.png differ diff --git a/kanban_sticky_state/static/description/assets/modules/pivot.png b/kanban_sticky_state/static/description/assets/modules/pivot.png new file mode 100644 index 000000000..c36f4854e Binary files /dev/null and b/kanban_sticky_state/static/description/assets/modules/pivot.png differ diff --git a/kanban_sticky_state/static/description/assets/modules/sticky.png b/kanban_sticky_state/static/description/assets/modules/sticky.png new file mode 100644 index 000000000..33372bdc1 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/modules/sticky.png differ diff --git a/kanban_sticky_state/static/description/assets/screenshots/1.png b/kanban_sticky_state/static/description/assets/screenshots/1.png new file mode 100644 index 000000000..8b5d0cd97 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/screenshots/1.png differ diff --git a/kanban_sticky_state/static/description/assets/screenshots/2.png b/kanban_sticky_state/static/description/assets/screenshots/2.png new file mode 100644 index 000000000..f21d1df4b Binary files /dev/null and b/kanban_sticky_state/static/description/assets/screenshots/2.png differ diff --git a/kanban_sticky_state/static/description/assets/screenshots/3.png b/kanban_sticky_state/static/description/assets/screenshots/3.png new file mode 100644 index 000000000..04a350dd6 Binary files /dev/null and b/kanban_sticky_state/static/description/assets/screenshots/3.png differ diff --git a/kanban_sticky_state/static/description/assets/screenshots/hero.gif b/kanban_sticky_state/static/description/assets/screenshots/hero.gif new file mode 100644 index 000000000..87757008b Binary files /dev/null and b/kanban_sticky_state/static/description/assets/screenshots/hero.gif differ diff --git a/kanban_sticky_state/static/description/banner.jpg b/kanban_sticky_state/static/description/banner.jpg new file mode 100644 index 000000000..ca0c18ffe Binary files /dev/null and b/kanban_sticky_state/static/description/banner.jpg differ diff --git a/kanban_sticky_state/static/description/icon.png b/kanban_sticky_state/static/description/icon.png new file mode 100644 index 000000000..6a7e5cf28 Binary files /dev/null and b/kanban_sticky_state/static/description/icon.png differ diff --git a/kanban_sticky_state/static/description/index.html b/kanban_sticky_state/static/description/index.html new file mode 100644 index 000000000..1bc7dddbc --- /dev/null +++ b/kanban_sticky_state/static/description/index.html @@ -0,0 +1,634 @@ +
+ +
+ +
+
+ Community +
+
+ Enterprise +
+
+ Odoo.Sh +
+
+
+ +
+
+
+ +

+ Kanban Sticky State

+

+ Kanban Sticky State Helps you to Stick Kanban Heading at + Top .

+ + +
+
+
+
+ + +
+
+ +
+

+ Explore This + Module

+
+ + + + +
+
+ +
+

+ Overview +

+
+
+
+ You can maintain the kanban heading in place at the top by using Kanban + Sticky State. +
+
+ + + +
+
+ +
+

+ Features +

+
+
+
+
+ + Keep the Kanban Header at the Top. + +
+
+
+
+ + Available in Odoo 16 Community , Enterprise and Odoo.Sh. + +
+
+
+ + + +
+
+ +
+

+ Screenshots +

+
+
+
+ +
+

+ Configuration +

+

+ Go to General Settings -> + Kanban Sticky State + -> + Enable Kanban Sticky State.

+ +
+ +
+

+ When scrolling the kanban view we can see the Kanban State is + Sticky.

+ + +
+ +
+
+ + + +
+
+ +
+

+ Related + Products +

+
+
+
+ +
+
+ + + + +
+
+ +
+

+ Our Services +

+
+ +
+
+
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+ +
+ + + + + +
+
+ +
+

+ Our + Industries +

+
+ +
+
+
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+
+
+ + + + +
+
+ +
+

+ Support +

+
+
+
+
+
+
+ +
+
+

Need Help?

+

Got questions or need help? + Get in touch.

+ +

+ odoo@cybrosys.com

+
+
+
+
+
+
+
+ +
+
+

WhatsApp

+

Say hi to us on WhatsApp!

+ +

+ +91 86068 + 27707

+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/kanban_sticky_state/static/src/css/kanban_sticky_state.css b/kanban_sticky_state/static/src/css/kanban_sticky_state.css new file mode 100644 index 000000000..02b5f0176 --- /dev/null +++ b/kanban_sticky_state/static/src/css/kanban_sticky_state.css @@ -0,0 +1,10 @@ +.is_kanban_sticky_state{ + position: sticky; + top: 0 !important; + height: 75px; + z-index: 99; + background: #f8f9fa; +} +.kanban-label { + margin-right: 8px; +} diff --git a/kanban_sticky_state/static/src/js/kanban_sticky_state.js b/kanban_sticky_state/static/src/js/kanban_sticky_state.js new file mode 100644 index 000000000..ab9cf83ff --- /dev/null +++ b/kanban_sticky_state/static/src/js/kanban_sticky_state.js @@ -0,0 +1,193 @@ +/** @odoo-module **/ +/** + * KanbanRenderer with Kanban Sticky State + * + * This patch modifies the setup method of the component prototype to add functionality + * related to the Kanban view. It also adds two additional methods, add_class and + * remove_class, which are called based on the value of session.kanban_sticky_state + * to add or remove a CSS class from certain elements. + */ +import { KanbanRenderer } from "@web/views/kanban/kanban_renderer"; +import session from 'web.session'; +import { patch } from "@web/core/utils/patch"; +import { registry } from "@web/core/registry"; +import { useHotkey } from "@web/core/hotkeys/hotkey_hook"; +import { useSortable } from "@web/core/utils/sortable"; +import { useBus, useService } from "@web/core/utils/hooks"; +import { useBounceButton } from "@web/views/view_hook"; +import { useState, useRef, onPatched, onWillPatch, onWillDestroy, onMounted } from "@odoo/owl"; +function validateColumnQuickCreateExamples(data) { + const { allowedGroupBys = [], examples = [] } = data; + if (!allowedGroupBys.length) { + throw new Error("The example data must contain an array of allowed groupbys"); + } + if (!examples.length) { + throw new Error("The example data must contain an array of examples"); + } +} +patch(KanbanRenderer.prototype, 'kanban_sticky_state.KanbanRenderer',{ + /** + * Setup method for the KanbanRenderer. + */ + updateStickyHeaderClass() { + var elements = document.querySelectorAll('.o_kanban_header, .o_column_quick_create, .o_quick_create_folded'); + for (var element of elements) { + if (session.is_kanban_sticky_state) { + element.classList.add("is_kanban_sticky_state"); + } else { + element.classList.remove("is_kanban_sticky_state"); + } + } +}, + setup() { + this.dialogClose = []; + this.state = useState({ + columnQuickCreateIsFolded: + !this.props.list.isGrouped || this.props.list.groups.length > 0, + }); + this.dialog = useService("dialog"); + this.exampleData = registry + .category("kanban_examples") + .get(this.props.archInfo.examples, null); + if (this.exampleData) { + validateColumnQuickCreateExamples(this.exampleData); + } + this.ghostColumns = this.generateGhostColumns(); + onMounted(() => this.updateStickyHeaderClass()); + onPatched(() => this.updateStickyHeaderClass()); + // Sortable + let dataRecordId; + let dataGroupId; + const rootRef = useRef("root"); + if (this.canUseSortable) { + useSortable({ + enable: () => this.canResequenceRecords, + // Params + ref: rootRef, + elements: ".o_record_draggable", + ignore: ".dropdown", + groups: () => this.props.list.isGrouped && ".o_kanban_group", + connectGroups: () => this.canMoveRecords, + cursor: "move", + // Hooks + onDragStart: (params) => { + const { element, group } = params; + dataRecordId = element.dataset.id; + dataGroupId = group && group.dataset.id; + return this.sortStart(params); + }, + onDragEnd: (params) => this.sortStop(params), + onGroupEnter: (params) => this.sortRecordGroupEnter(params), + onGroupLeave: (params) => this.sortRecordGroupLeave(params), + onDrop: (params) => this.sortRecordDrop(dataRecordId, dataGroupId, params), + }); + useSortable({ + enable: () => this.canResequenceGroups, + // Params + ref: rootRef, + elements: ".o_group_draggable", + handle: ".o_column_title", + cursor: "move", + // Hooks + onDragStart: (params) => { + const { element } = params; + dataGroupId = element.dataset.id; + return this.sortStart(params); + }, + onDragEnd: (params) => this.sortStop(params), + onDrop: (params) => this.sortGroupDrop(dataGroupId, params), + }); + } + useBounceButton(rootRef, (clickedEl) => { + if (!this.props.list.count || this.props.list.model.useSampleModel) { + return clickedEl.matches( + [ + ".o_kanban_renderer", + ".o_kanban_group", + ".o_kanban_header", + ".o_column_quick_create", + ".o_view_nocontent_smiling_face", + ].join(", ") + ); + } + return false; + }); + onWillDestroy(() => { + this.dialogClose.forEach((close) => close()); + }); + if (this.env.searchModel) { + useBus(this.env.searchModel, "focus-view", () => { + const { model } = this.props.list; + if (model.useSampleModel || !model.hasData()) { + return; + } + const firstCard = rootRef.el.querySelector(".o_kanban_record"); + if (firstCard) { + // Focus first kanban card + firstCard.focus(); + } + }); + } + useHotkey( + "Enter", + ({ target }) => { + if (!target.classList.contains("o_kanban_record")) { + return; + } + // Open first link + const firstLink = target.querySelector(".oe_kanban_global_click, a, button"); + if (firstLink && firstLink instanceof HTMLElement) { + firstLink.click(); + } + return; + }, + { area: () => rootRef.el } + ); + const arrowsOptions = { area: () => rootRef.el, allowRepeat: true }; + if (this.env.searchModel) { + useHotkey( + "ArrowUp", + ({ area }) => { + if (!this.focusNextCard(area, "up")) { + this.env.searchModel.trigger("focus-search"); + } + }, + arrowsOptions + ); + } + useHotkey("ArrowDown", ({ area }) => this.focusNextCard(area, "down"), arrowsOptions); + useHotkey("ArrowLeft", ({ area }) => this.focusNextCard(area, "left"), arrowsOptions); + useHotkey("ArrowRight", ({ area }) => this.focusNextCard(area, "right"), arrowsOptions); + let previousScrollTop = 0; + onWillPatch(() => { + previousScrollTop = rootRef.el.scrollTop; + }); + onPatched(() => { + rootRef.el.scrollTop = previousScrollTop; + }); + // Add or remove CSS class based on the value of kanban_sticky_state + if (session.is_kanban_sticky_state) { + onMounted(this.add_class) + } else { + onMounted(this.remove_class) + } + }, + /** + * Add CSS class on condition of kanban_sticky_state value. + */ + add_class(){ + var elements = document.getElementsByClassName('o_kanban_header') + for(var element=0;element + + + + + res.config.settings.view.form.inherit.kanban.sticky.state + + res.config.settings + + + +
+

Kanban Sticky State

+
+
+
+
+
+
+
+
+
+