diff --git a/json_widget/README.md b/json_widget/README.md deleted file mode 100644 index d2365de83..000000000 --- a/json_widget/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# JSON Widget for Odoo 17 - -[![Odoo](https://img.shields.io/badge/Odoo-%23A24689.svg?style=for-the-badge&logo=Odoo&logoColor=white)](https://www.odoo.com) -[![License](https://img.shields.io/badge/License-MIT-green.svg?style=for-the-badge)](https://opensource.org/licenses/MIT) - -An interactive and intuitive widget for managing JSON fields in Odoo 17, built using the modern OWL JavaScript framework. - -## Overview - -The JSON Widget is an Odoo module designed to simplify the management of JSON fields by providing an intuitive, interactive interface using OWL, allowing users to view, edit, and organize key-value data seamlessly within the Odoo backend. - -## Features - -- Features -- 🧩 **Interactive JSON Editor**: Easily add, edit, and delete key-value pairs with a user-friendly UI. -- ⚙️ **Seamless Odoo Integration**: Works effortlessly with Odoo 17 models using JSON fields. -- 🚀 **Modern OWL Framework**: Built with Odoo's OWL JavaScript framework for reactive and responsive behavior. -- 💾 **Structured Data Management**: Ensures clean and consistent JSON data storage within your records. -## Screenshots - -Here are some glimpses of Json Widget: - -### User Interface of WebView - -
- - - Feature 1 - - -
- diff --git a/json_widget/__manifest__.py b/json_widget/__manifest__.py deleted file mode 100644 index c41dbc0e9..000000000 --- a/json_widget/__manifest__.py +++ /dev/null @@ -1,43 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################# -# -# Cybrosys Technologies Pvt. Ltd. -# -# Copyright (C) 2025-TODAY Cybrosys Technologies() -# Author: Amrithesh K (odoo@cybrosys.com) -# -# You can modify it under the terms of the GNU LESSER -# GENERAL PUBLIC LICENSE (LGPL 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 LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. -# -# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE -# (LGPL v3) along with this program. -# If not, see . -# -############################################################################# -{ - 'name': 'JSON Widget Field', - 'version': '17.0.1.0.0', - 'summary': """Interactive JSON Field Editor Widget for Odoo""", - 'description': """ - This module provides a user-friendly widget for editing JSON data fields in Odoo, - allowing easy management of key-value pairs through an intuitive interface without.""", - 'author': "Cybrosys Techno Solutions", - 'company': 'Cybrosys Techno Solutions', - 'maintainer': 'Cybrosys Techno Solutions', - 'website': "https://www.cybrosys.com", - 'depends': ['web'], - 'assets': { - 'web.assets_backend': [ - "json_widget/static/src/**/*" - ], - }, - 'images': ['static/description/banner.jpg'], - 'license': "LGPL-3", - 'installable': True, - 'auto_install': False, -} diff --git a/json_widget/doc/RELEASE_NOTES.md b/json_widget/doc/RELEASE_NOTES.md deleted file mode 100644 index 688601d42..000000000 --- a/json_widget/doc/RELEASE_NOTES.md +++ /dev/null @@ -1,7 +0,0 @@ -## Module - -#### 15.07.2025 -#### Version 17.0.1.0.0 -##### ADD - -- Initial Commit for JSON Widget \ No newline at end of file diff --git a/json_widget/static/description/assets/cybro-icon.png b/json_widget/static/description/assets/cybro-icon.png deleted file mode 100644 index 06e73e11d..000000000 Binary files a/json_widget/static/description/assets/cybro-icon.png and /dev/null differ diff --git a/json_widget/static/description/assets/cybro-odoo.png b/json_widget/static/description/assets/cybro-odoo.png deleted file mode 100644 index ed02e07a4..000000000 Binary files a/json_widget/static/description/assets/cybro-odoo.png and /dev/null differ diff --git a/json_widget/static/description/assets/h2.png b/json_widget/static/description/assets/h2.png deleted file mode 100755 index 0bfc4707d..000000000 Binary files a/json_widget/static/description/assets/h2.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/arrows-repeat.svg b/json_widget/static/description/assets/icons/arrows-repeat.svg deleted file mode 100644 index 1d7efabc5..000000000 --- a/json_widget/static/description/assets/icons/arrows-repeat.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/json_widget/static/description/assets/icons/banner-1.png b/json_widget/static/description/assets/icons/banner-1.png deleted file mode 100644 index c180db172..000000000 Binary files a/json_widget/static/description/assets/icons/banner-1.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/banner-2.svg b/json_widget/static/description/assets/icons/banner-2.svg deleted file mode 100644 index e606d97d9..000000000 --- a/json_widget/static/description/assets/icons/banner-2.svg +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/json_widget/static/description/assets/icons/banner-bg.png b/json_widget/static/description/assets/icons/banner-bg.png deleted file mode 100644 index a8238d3c0..000000000 Binary files a/json_widget/static/description/assets/icons/banner-bg.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/banner-bg.svg b/json_widget/static/description/assets/icons/banner-bg.svg deleted file mode 100644 index b1378103e..000000000 --- a/json_widget/static/description/assets/icons/banner-bg.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/json_widget/static/description/assets/icons/banner-call.svg b/json_widget/static/description/assets/icons/banner-call.svg deleted file mode 100644 index 96c687e81..000000000 --- a/json_widget/static/description/assets/icons/banner-call.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/json_widget/static/description/assets/icons/banner-mail.svg b/json_widget/static/description/assets/icons/banner-mail.svg deleted file mode 100644 index cbf0d158d..000000000 --- a/json_widget/static/description/assets/icons/banner-mail.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/json_widget/static/description/assets/icons/banner-pattern.svg b/json_widget/static/description/assets/icons/banner-pattern.svg deleted file mode 100644 index 9c1c7e101..000000000 --- a/json_widget/static/description/assets/icons/banner-pattern.svg +++ /dev/null @@ -1,343 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/json_widget/static/description/assets/icons/banner-promo.svg b/json_widget/static/description/assets/icons/banner-promo.svg deleted file mode 100644 index d52791b11..000000000 --- a/json_widget/static/description/assets/icons/banner-promo.svg +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/json_widget/static/description/assets/icons/brand-pair.svg b/json_widget/static/description/assets/icons/brand-pair.svg deleted file mode 100644 index d8db7fc1e..000000000 --- a/json_widget/static/description/assets/icons/brand-pair.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/json_widget/static/description/assets/icons/check.png b/json_widget/static/description/assets/icons/check.png deleted file mode 100644 index c8e85f51d..000000000 Binary files a/json_widget/static/description/assets/icons/check.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/chevron.png b/json_widget/static/description/assets/icons/chevron.png deleted file mode 100644 index 2089293d6..000000000 Binary files a/json_widget/static/description/assets/icons/chevron.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/close-icon.svg b/json_widget/static/description/assets/icons/close-icon.svg deleted file mode 100644 index df8cce37a..000000000 --- a/json_widget/static/description/assets/icons/close-icon.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/json_widget/static/description/assets/icons/cogs.png b/json_widget/static/description/assets/icons/cogs.png deleted file mode 100644 index 95d0bad62..000000000 Binary files a/json_widget/static/description/assets/icons/cogs.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/collabarate-icon.svg b/json_widget/static/description/assets/icons/collabarate-icon.svg deleted file mode 100644 index dd4e10518..000000000 --- a/json_widget/static/description/assets/icons/collabarate-icon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/json_widget/static/description/assets/icons/consultation.png b/json_widget/static/description/assets/icons/consultation.png deleted file mode 100644 index 8319d4baa..000000000 Binary files a/json_widget/static/description/assets/icons/consultation.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/cybro-logo.png b/json_widget/static/description/assets/icons/cybro-logo.png deleted file mode 100644 index ff4b78220..000000000 Binary files a/json_widget/static/description/assets/icons/cybro-logo.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/down.svg b/json_widget/static/description/assets/icons/down.svg deleted file mode 100644 index f21c36271..000000000 --- a/json_widget/static/description/assets/icons/down.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/json_widget/static/description/assets/icons/ecom-black.png b/json_widget/static/description/assets/icons/ecom-black.png deleted file mode 100644 index a9385ff13..000000000 Binary files a/json_widget/static/description/assets/icons/ecom-black.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/education-black.png b/json_widget/static/description/assets/icons/education-black.png deleted file mode 100644 index 3eb09b27b..000000000 Binary files a/json_widget/static/description/assets/icons/education-black.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/faq.png b/json_widget/static/description/assets/icons/faq.png deleted file mode 100644 index 4250b5b81..000000000 Binary files a/json_widget/static/description/assets/icons/faq.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/feature-icon.svg b/json_widget/static/description/assets/icons/feature-icon.svg deleted file mode 100644 index fa0ea6850..000000000 --- a/json_widget/static/description/assets/icons/feature-icon.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/json_widget/static/description/assets/icons/feature.png b/json_widget/static/description/assets/icons/feature.png deleted file mode 100644 index ac7a785c0..000000000 Binary files a/json_widget/static/description/assets/icons/feature.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/gear.svg b/json_widget/static/description/assets/icons/gear.svg deleted file mode 100644 index 0cc66b6ea..000000000 --- a/json_widget/static/description/assets/icons/gear.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/json_widget/static/description/assets/icons/hero.gif b/json_widget/static/description/assets/icons/hero.gif deleted file mode 100644 index d28160470..000000000 Binary files a/json_widget/static/description/assets/icons/hero.gif and /dev/null differ diff --git a/json_widget/static/description/assets/icons/hire-odoo.svg b/json_widget/static/description/assets/icons/hire-odoo.svg deleted file mode 100644 index e1ac089b0..000000000 --- a/json_widget/static/description/assets/icons/hire-odoo.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/json_widget/static/description/assets/icons/hotel-black.png b/json_widget/static/description/assets/icons/hotel-black.png deleted file mode 100644 index 130f613be..000000000 Binary files a/json_widget/static/description/assets/icons/hotel-black.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/license.png b/json_widget/static/description/assets/icons/license.png deleted file mode 100644 index a5869797e..000000000 Binary files a/json_widget/static/description/assets/icons/license.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/life-ring-icon.svg b/json_widget/static/description/assets/icons/life-ring-icon.svg deleted file mode 100644 index 3ae6e1d89..000000000 --- a/json_widget/static/description/assets/icons/life-ring-icon.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/json_widget/static/description/assets/icons/lifebuoy.png b/json_widget/static/description/assets/icons/lifebuoy.png deleted file mode 100644 index 658d56ccc..000000000 Binary files a/json_widget/static/description/assets/icons/lifebuoy.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/mail.svg b/json_widget/static/description/assets/icons/mail.svg deleted file mode 100644 index 1eedde695..000000000 --- a/json_widget/static/description/assets/icons/mail.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/json_widget/static/description/assets/icons/manufacturing-black.png b/json_widget/static/description/assets/icons/manufacturing-black.png deleted file mode 100644 index 697eb0e9f..000000000 Binary files a/json_widget/static/description/assets/icons/manufacturing-black.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/notes.png b/json_widget/static/description/assets/icons/notes.png deleted file mode 100644 index ee5e95404..000000000 Binary files a/json_widget/static/description/assets/icons/notes.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/notification icon.svg b/json_widget/static/description/assets/icons/notification icon.svg deleted file mode 100644 index 053189973..000000000 --- a/json_widget/static/description/assets/icons/notification icon.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/json_widget/static/description/assets/icons/odoo-consultancy.svg b/json_widget/static/description/assets/icons/odoo-consultancy.svg deleted file mode 100644 index e05f65bde..000000000 --- a/json_widget/static/description/assets/icons/odoo-consultancy.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/json_widget/static/description/assets/icons/odoo-licencing.svg b/json_widget/static/description/assets/icons/odoo-licencing.svg deleted file mode 100644 index 2606c88b0..000000000 --- a/json_widget/static/description/assets/icons/odoo-licencing.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/json_widget/static/description/assets/icons/odoo-logo.png b/json_widget/static/description/assets/icons/odoo-logo.png deleted file mode 100644 index 0e4d0eb5a..000000000 Binary files a/json_widget/static/description/assets/icons/odoo-logo.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/patter.svg b/json_widget/static/description/assets/icons/patter.svg deleted file mode 100644 index 25c9c0a8f..000000000 --- a/json_widget/static/description/assets/icons/patter.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/json_widget/static/description/assets/icons/pattern1.png b/json_widget/static/description/assets/icons/pattern1.png deleted file mode 100644 index 09ab0fb2d..000000000 Binary files a/json_widget/static/description/assets/icons/pattern1.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/pos-black.png b/json_widget/static/description/assets/icons/pos-black.png deleted file mode 100644 index 97c0f90c1..000000000 Binary files a/json_widget/static/description/assets/icons/pos-black.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/puzzle-piece-icon.svg b/json_widget/static/description/assets/icons/puzzle-piece-icon.svg deleted file mode 100644 index 3e9ad9373..000000000 --- a/json_widget/static/description/assets/icons/puzzle-piece-icon.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/json_widget/static/description/assets/icons/puzzle.png b/json_widget/static/description/assets/icons/puzzle.png deleted file mode 100644 index 65cf854e7..000000000 Binary files a/json_widget/static/description/assets/icons/puzzle.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/replace-icon.svg b/json_widget/static/description/assets/icons/replace-icon.svg deleted file mode 100644 index d0e3a7af1..000000000 --- a/json_widget/static/description/assets/icons/replace-icon.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/json_widget/static/description/assets/icons/restaurant-black.png b/json_widget/static/description/assets/icons/restaurant-black.png deleted file mode 100644 index 4a35eb939..000000000 Binary files a/json_widget/static/description/assets/icons/restaurant-black.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/screenshot-main.png b/json_widget/static/description/assets/icons/screenshot-main.png deleted file mode 100644 index 575f8e676..000000000 Binary files a/json_widget/static/description/assets/icons/screenshot-main.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/screenshot.png b/json_widget/static/description/assets/icons/screenshot.png deleted file mode 100644 index cef272529..000000000 Binary files a/json_widget/static/description/assets/icons/screenshot.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/service-black.png b/json_widget/static/description/assets/icons/service-black.png deleted file mode 100644 index 301ab51cb..000000000 Binary files a/json_widget/static/description/assets/icons/service-black.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/skype-fill.svg b/json_widget/static/description/assets/icons/skype-fill.svg deleted file mode 100644 index c17423639..000000000 --- a/json_widget/static/description/assets/icons/skype-fill.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/json_widget/static/description/assets/icons/skype.png b/json_widget/static/description/assets/icons/skype.png deleted file mode 100644 index 51b409fb3..000000000 Binary files a/json_widget/static/description/assets/icons/skype.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/skype.svg b/json_widget/static/description/assets/icons/skype.svg deleted file mode 100644 index df3dad39b..000000000 --- a/json_widget/static/description/assets/icons/skype.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/json_widget/static/description/assets/icons/star-1.svg b/json_widget/static/description/assets/icons/star-1.svg deleted file mode 100644 index 7e55ab162..000000000 --- a/json_widget/static/description/assets/icons/star-1.svg +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/json_widget/static/description/assets/icons/star-2.svg b/json_widget/static/description/assets/icons/star-2.svg deleted file mode 100644 index 5ae9f507a..000000000 --- a/json_widget/static/description/assets/icons/star-2.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/json_widget/static/description/assets/icons/support.png b/json_widget/static/description/assets/icons/support.png deleted file mode 100644 index 4f18b8b82..000000000 Binary files a/json_widget/static/description/assets/icons/support.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/test-1 - Copy.png b/json_widget/static/description/assets/icons/test-1 - Copy.png deleted file mode 100644 index f6a902663..000000000 Binary files a/json_widget/static/description/assets/icons/test-1 - Copy.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/test-1.png b/json_widget/static/description/assets/icons/test-1.png deleted file mode 100644 index 0908add2b..000000000 Binary files a/json_widget/static/description/assets/icons/test-1.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/test-2.png b/json_widget/static/description/assets/icons/test-2.png deleted file mode 100644 index 4671fe91e..000000000 Binary files a/json_widget/static/description/assets/icons/test-2.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/trading-black.png b/json_widget/static/description/assets/icons/trading-black.png deleted file mode 100644 index 9398ba2f1..000000000 Binary files a/json_widget/static/description/assets/icons/trading-black.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/training.png b/json_widget/static/description/assets/icons/training.png deleted file mode 100644 index 884ca024d..000000000 Binary files a/json_widget/static/description/assets/icons/training.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/translate.svg b/json_widget/static/description/assets/icons/translate.svg deleted file mode 100644 index af9c8a1aa..000000000 --- a/json_widget/static/description/assets/icons/translate.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/json_widget/static/description/assets/icons/update.png b/json_widget/static/description/assets/icons/update.png deleted file mode 100644 index ecbc5a01a..000000000 Binary files a/json_widget/static/description/assets/icons/update.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/user.png b/json_widget/static/description/assets/icons/user.png deleted file mode 100644 index 6ffb23d9f..000000000 Binary files a/json_widget/static/description/assets/icons/user.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/video.png b/json_widget/static/description/assets/icons/video.png deleted file mode 100644 index 576705b17..000000000 Binary files a/json_widget/static/description/assets/icons/video.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/whatsapp.png b/json_widget/static/description/assets/icons/whatsapp.png deleted file mode 100644 index d513a5356..000000000 Binary files a/json_widget/static/description/assets/icons/whatsapp.png and /dev/null differ diff --git a/json_widget/static/description/assets/icons/wrench-icon.svg b/json_widget/static/description/assets/icons/wrench-icon.svg deleted file mode 100644 index 174b5a465..000000000 --- a/json_widget/static/description/assets/icons/wrench-icon.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/json_widget/static/description/assets/icons/wrench.png b/json_widget/static/description/assets/icons/wrench.png deleted file mode 100644 index 6c04dea0f..000000000 Binary files a/json_widget/static/description/assets/icons/wrench.png and /dev/null differ diff --git a/json_widget/static/description/assets/modules/b1.png b/json_widget/static/description/assets/modules/b1.png deleted file mode 100644 index 6e617f3d3..000000000 Binary files a/json_widget/static/description/assets/modules/b1.png and /dev/null differ diff --git a/json_widget/static/description/assets/modules/b2.png b/json_widget/static/description/assets/modules/b2.png deleted file mode 100644 index 696582fa8..000000000 Binary files a/json_widget/static/description/assets/modules/b2.png and /dev/null differ diff --git a/json_widget/static/description/assets/modules/b3.png b/json_widget/static/description/assets/modules/b3.png deleted file mode 100644 index cf81c09f8..000000000 Binary files a/json_widget/static/description/assets/modules/b3.png and /dev/null differ diff --git a/json_widget/static/description/assets/modules/b4.png b/json_widget/static/description/assets/modules/b4.png deleted file mode 100644 index 206e14c47..000000000 Binary files a/json_widget/static/description/assets/modules/b4.png and /dev/null differ diff --git a/json_widget/static/description/assets/modules/b5.png b/json_widget/static/description/assets/modules/b5.png deleted file mode 100644 index 1b0ce4674..000000000 Binary files a/json_widget/static/description/assets/modules/b5.png and /dev/null differ diff --git a/json_widget/static/description/assets/modules/b6.png b/json_widget/static/description/assets/modules/b6.png deleted file mode 100644 index 0249a98f1..000000000 Binary files a/json_widget/static/description/assets/modules/b6.png and /dev/null differ diff --git a/json_widget/static/description/assets/screenshots/ui.png b/json_widget/static/description/assets/screenshots/ui.png deleted file mode 100644 index a19adc93e..000000000 Binary files a/json_widget/static/description/assets/screenshots/ui.png and /dev/null differ diff --git a/json_widget/static/description/assets/y18.jpg b/json_widget/static/description/assets/y18.jpg deleted file mode 100755 index eea1714f2..000000000 Binary files a/json_widget/static/description/assets/y18.jpg and /dev/null differ diff --git a/json_widget/static/description/banner.jpg b/json_widget/static/description/banner.jpg deleted file mode 100644 index a1c752039..000000000 Binary files a/json_widget/static/description/banner.jpg and /dev/null differ diff --git a/json_widget/static/description/icon.png b/json_widget/static/description/icon.png deleted file mode 100644 index c9deeeb0a..000000000 Binary files a/json_widget/static/description/icon.png and /dev/null differ diff --git a/json_widget/static/description/index.html b/json_widget/static/description/index.html deleted file mode 100644 index e9d69284a..000000000 --- a/json_widget/static/description/index.html +++ /dev/null @@ -1,797 +0,0 @@ - - - - - - JSON Widget - - - - - - - - - - -
-
- - - -
-
- Community -
-
- Enterprise -
-
- Odoo.sh -
-
-
- -
-
-
-
-

- The JSON Widget adds an intuitive OWL-based interface to easily view and edit JSON - fields in Odoo. -

-

JSON Widget Field -

-
-
- -
- -
-
- -
-
- -
-
- -
-
-
-

Key - Highlights

-
-
-
-
- -
-
- Interactive JSON Editor. -
-

-

-
-
-
-
-
- -
-
- Seamless Odoo Integration. -
-

-

-
-
-
-
-
- -
-
- Modern OWL Framework. -
-

-

-
-
-
-
- -
-
-
- JSON Widget -

- Are you ready to make your business more - organized? -
Improve now! -

- -
-
- -
-
-
- - - - -
-
- -
-
-
-
- acc_bg -
- -
-
-
-
-

- Add a JSON field and include it in the - form view. -

-
-
-
- -
-
- - - - some_model.py -
-
-
-from odoo import fields, models
-class SomeModel(models.Model):
-    _name = 'some.model'
-    json_data = fields.Json(string="JSON Data")
-
-
-
- - -
-
- - - - form_view.xml -
-
-
-<field name="json_data" widget="json_widget"/>
-
-
-
-
-
-
-
-
-
-
-
-
-

- User Interface of the - - JSON Widget. -

-
-
-
- -
-
-
-
-
-
-
-
- -
-
-
-
- -
-

- Easily add, edit, and delete key-value pairs with a user-friendly UI. -

-
-
-
-
-
-
-
- -
-

- Ensures clean and consistent JSON data storage within your records. -

-
- -
-
-
-
-
-
- -
-

- Works effortlessly with Odoo 17 models using JSON fields. -

-
- -
-
-
-
-
-
- - - -
-

- Related Products -

- -
- - -
-

- Our Services

-
- -
-
- .... -
-
- -
- - -
-
- - - - - - diff --git a/json_widget/static/src/components/json_widget/json_widget.js b/json_widget/static/src/components/json_widget/json_widget.js deleted file mode 100644 index 8f89d8e2f..000000000 --- a/json_widget/static/src/components/json_widget/json_widget.js +++ /dev/null @@ -1,260 +0,0 @@ -/** @odoo-module **/ -/** - * JSON widget: custom field widget to edit JSON fields as key/value pairs. - */ -import { registry } from "@web/core/registry"; -import { standardFieldProps } from "@web/views/fields/standard_field_props"; -import { useService } from "@web/core/utils/hooks"; -import { Component, useState, useRef, useExternalListener } from "@odoo/owl"; -import { Field } from "@web/views/fields/field"; -import { Record } from "@web/model/record"; -import { TagsList } from "@web/core/tags_list/tags_list"; -import { _t } from "@web/core/l10n/translation"; -import { useRecordObserver } from "@web/model/relational_model/utils"; - -const TAG_COLOR_COUNT = 5; -/** - * JSON Widget Component - */ -export class JsonWidget extends Component { - static template = "web.JsonWidget"; - static components = { TagsList, Record, Field }; - static props = { ...standardFieldProps }; - /** - * Component initialization - */ - setup() { - this.notification = useService("notification"); - this.state = useState({ - showDropdown: false, - entries: [], - dropdownReady: false, - isLastEntryValid: true, - hasEmptyKey: false, - hasDuplicateKey: false, - }); - this.jsonDropdown = useRef("jsonDropdown"); - this.onWindowClickListener = (ev) => { - if ( - this.state.showDropdown && - this.jsonDropdown.el && - !this.jsonDropdown.el.contains(ev.target) && - !ev.target.isSameNode(document.documentElement) - ) { - this.closeJsonEditor(); - } - }; - useExternalListener(window, "click", this.onWindowClickListener, true); - this.initializeEntries(); - - useRecordObserver((nextProps) => { - this.initializeEntries(nextProps.data[this.props.name], true); - }); - } - /** - * Initialize entries from JSON data. - * @param {Object} tableData - Optional JSON data. - * @param {boolean} updateProps - Use provided data instead of current record. - */ - initializeEntries(tableData, updateProps = false) { - const jsonData = updateProps ? tableData || {} : this.props.record.data[this.props.name]; - this.state.entries = this.formatJsonToEntries(jsonData); - } - /** - * Convert JSON object to array of key-value entries. - */ - formatJsonToEntries(jsonData) { - return Object.entries(jsonData || {}).map(([key, value], index) => ({ - index, - id: `line_${index}`, - key, - value: typeof value === "object" ? JSON.stringify(value) : String(value), - })); - } - /** - * Convert entries array back to JSON object. - */ - formatEntriesToJson() { - return this.state.entries - .filter((entry) => entry.key) - .reduce((acc, entry) => { - try { - const value = entry.value.startsWith("{") || entry.value.startsWith("[") - ? JSON.parse(entry.value) - : entry.value; - acc[entry.key.trim()] = value; - } catch { - acc[entry.key.trim()] = entry.value; - } - return acc; - }, {}); - } - /** - * Update the record field with JSON data. - */ - async updateRecord() { - const jsonData = this.formatEntriesToJson(); - await this.props.record.update({ [this.props.name]: jsonData }); - this.state.isLastEntryValid = true; - this.state.hasDuplicateKey = false; - this.state.hasEmptyKey = false; - } - /** - * Handle Escape key to close editor. - */ - onWidgetKeydown(ev) { - if (ev.key === "Escape") { - this.closeJsonEditor(); - } - } - /** - * Open the JSON editor dropdown. - */ - async openJsonEditor() { - if (!this.props.readonly) { - this.state.showDropdown = true; - await Promise.resolve(); - this.state.dropdownReady = true; - } - } - /** - * Close the JSON editor and update record. - */ - async closeJsonEditor() { - await this.updateRecord(); - this.state.showDropdown = false; - } - /** - * Add a new empty line. - */ - addLine() { - const lastEntry = this.state.entries[this.state.entries.length - 1]; - this.state.isLastEntryValid = this.state.entries.length === 0 || !!lastEntry?.key; - - if (this.state.isLastEntryValid) { - const newId = `line_${this.state.entries.length}`; - this.state.entries.push({ id: newId, key: "", value: "" }); - } else { - const textInputs = this.jsonDropdown.el?.querySelectorAll('input[type="text"]') || []; - if (this.state.hasDuplicateKey) { - this.notification.add(_t("Duplicate keys are not allowed"), { type: "warning" }); - } else if (this.state.hasEmptyKey) { - this.notification.add(_t("Key cannot be empty"), { type: "warning" }); - } else { - this.notification.add(_t("Empty entry not allowed"), { type: "warning" }); - } - textInputs[textInputs.length - 2]?.focus(); - } - } - /** - * Delete a line by index. - */ - async deleteLine(index) { - if (typeof index === "number") { - this.state.entries.splice(index, 1); - } else { - this.state.entries.pop(); - } - await this.updateRecord(); - } - /** - * Validate entry: no empty key and no duplicates. - */ - validateEntry(entry) { - const keys = this.state.entries.map((e) => e.key); - const isDuplicate = keys.filter((k) => k === entry.key).length > 1; - - if (entry.key && entry.value) { - if (isDuplicate) { - this.state.hasDuplicateKey = true; - this.notification.add(_t("Duplicate keys are not allowed"), { type: "warning" }); - return false; - } - this.state.hasDuplicateKey = false; - this.state.hasEmptyKey = false; - return true; - } else if (entry.value && !entry.key) { - this.state.hasEmptyKey = true; - this.notification.add(_t("Key cannot be empty"), { type: "warning" }); - return false; - } - return true; - } - /** - * Update a specific entry. - */ - async updateEntry(record, changes, entry) { - const idx = this.state.entries.findIndex((e) => e.id === entry.id); - if (idx !== -1) { - this.state.entries[idx] = { ...this.state.entries[idx], ...changes }; - if (this.state.entries[idx].key && this.state.entries[idx].value) { - await this.updateRecord(); - } - } - } - /** - * Create props for Record component. - */ - recordProps(entry) { - const fields = { - key: { string: _t("Key"), type: "char" }, - value: { string: _t("Value"), type: "char" }, - }; - return { - fields, - values: { key: entry.key || "", value: entry.value === "false" ? "" : entry.value }, - activeFields: fields, - onRecordChanged: async (record, changes) => { - if (this.validateEntry({ ...entry, ...changes })) { - await this.updateEntry(record, changes, entry); - } - }, - }; - } - /** - * Tags to display summary of JSON. - */ - jsonSummaryTags() { - const jsonData = this.props.record.data[this.props.name] || {}; - return Object.keys(jsonData).map((key, index) => ({ - id: `tag_${index + 1}`, - text: key, - colorIndex: (index % TAG_COLOR_COUNT) + 1, - onClick: (ev) => this.handleTagClick(ev), - })); - } - /** - * Handle tag click to open editor. - */ - async handleTagClick(ev) { - ev.preventDefault(); - ev.stopPropagation(); - await this.openJsonEditor(); - await Promise.resolve(); - - const firstInput = this.jsonDropdown.el?.querySelector('input[type="text"]'); - firstInput?.focus(); - } - /** - * Focus first input when dropdown mounted. - */ - onDropdownMounted() { - if (this.state.dropdownReady) { - const firstInput = this.jsonDropdown.el?.querySelector('input[type="text"]'); - firstInput?.focus(); - } - } -} -/** - * Field definition for JsonWidget. - */ -export const jsonField = { - component: JsonWidget, - displayName: _t("JSON Editor"), - supportedTypes: ["json"], - extractProps: ({ attrs }) => ({ - readonly: attrs.readonly === "true", - }), -}; - -registry.category("fields").add("json_widget", jsonField); diff --git a/json_widget/static/src/components/json_widget/json_widget.xml b/json_widget/static/src/components/json_widget/json_widget.xml deleted file mode 100644 index a4d83ac32..000000000 --- a/json_widget/static/src/components/json_widget/json_widget.xml +++ /dev/null @@ -1,96 +0,0 @@ - - - -
- -
-
- - Click to add data - -
- -
-
-
- - - -