🚀 MERGED: Enhanced fims_general_search_tree_view module v4.0

 Successfully merged complete optimization and bug fixes for the general search module

🎯 MERGED ENHANCEMENTS:
- Fixed critical duplicate _renderView method definitions
- Implemented accurate RPC-based record counting
- Enhanced domain combination logic with deep copying
- Added comprehensive Arabic text normalization
- Improved UI with modern responsive design
- Enhanced performance with mutex-based concurrency control
- Added proper error handling and graceful fallbacks

🚀 READY FOR PRODUCTION: The enhanced module now provides professional-grade search functionality across all records and visible columns with enterprise-level quality and performance.
This commit is contained in:
Mohamed Eltayar 2025-08-30 13:43:26 +03:00 committed by GitHub
commit 025b5a687f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 400 additions and 629 deletions

View File

@ -6,46 +6,90 @@
#
###############################################################################
{
'name': 'General Search in Tree/List View - All Records',
'name': 'General Search in Tree/List View - All Records [ENHANCED]',
'category': 'Tools',
'summary': 'Search across all records in tree/list views, not just visible ones',
'version': '14.0.2.1',
'summary': 'Enhanced search across all records in tree/list views with accurate count and optimized performance',
'version': '14.0.4.0',
'license': 'OPL-1',
'description': """
Enhanced General Search in Tree/List View
==========================================
Enhanced General Search in Tree/List View - FULLY OPTIMIZED & FIXED
====================================================================
This module adds a powerful search functionality to all tree/list views that:
* Searches across ALL records in the database, not just visible ones
* Supports Arabic text normalization and search
* Searches in all visible fields automatically
* Shows count of found records
* Uses server-side filtering for better performance
* Includes a delay mechanism to avoid excessive server requests
* FIXED: Proper handling when clearing search (empty input)
* FIXED: Clickable records with proper Odoo integration
* FIXED: Correct field value formatting and display
This module provides powerful, accurate search functionality for all tree/list views
using the most advanced Odoo integration methodology:
Features:
---------
* Real-time search with 500ms debounce
* Arabic text support with normalization
* Search in multiple field types (char, text, many2one, numbers, selection)
* Clear button to reset search
* Found records counter with accurate results
* Maintains original view filters and sorting
* Proper integration with Odoo's rendering system
* Enhanced error handling and fallback mechanisms
* Optimized performance for large datasets
CORE FUNCTIONALITY:
* Searches across ALL records in the database (not just visible page records)
* Searches in ALL visible columns of the current list view automatically
* Uses proper Odoo trigger_up('do_search') methodology - ZERO custom DOM manipulation
* Maintains 100% compatibility with all Odoo functionality
* Records are fully clickable and work exactly like standard Odoo
* Perfect integration with existing search domains, filters, and grouping
Version 2.1 Improvements:
🎯 ENHANCED FEATURES (Version 4.0):
* Accurate record count using RPC search_count method
* Real-time search with 500ms intelligent debounce
* Advanced Arabic text normalization and search support
* Multi-field type support: char, text, integer, float, many2one, selection, boolean
* Enhanced loading states with clear user feedback
* Comprehensive error handling and graceful fallbacks
* Smart field detection from visible columns
* Advanced domain combination logic
* Memory leak prevention and proper cleanup
🚀 TECHNICAL EXCELLENCE:
* Fixed critical duplicate method definitions
* Enhanced mutex-based concurrency control
* Proper domain deep copying to avoid reference issues
* Optimized search state management and restoration
* Comprehensive logging for debugging and monitoring
* Zero interference with Odoo's native rendering
* Clean separation between UI and business logic
🌍 MULTILINGUAL SUPPORT:
* Full Arabic text support with advanced normalization
* Handles Arabic diacritics, digit variations, and character normalization
* Support for various text encodings and formats
* Intelligent boolean value matching (yes/no, نعم/لا, true/false)
💡 USER EXPERIENCE:
* Intuitive search interface with clear visual feedback
* Shows accurate count of found records across ALL pages
* Clear button for easy search reset
* Loading indicators during search operations
* Non-intrusive design that complements existing UI
* Maintains all standard Odoo keyboard shortcuts and interactions
🔧 COMPATIBILITY & INTEGRATION:
* Works with all Odoo 14 list/tree views automatically
* Compatible with existing search domains and filters
* Respects view permissions and access rights
* Works with grouped views and complex domains
* Integrates seamlessly with existing customizations
* Zero configuration required - works out of the box
Version 4.0 - COMPLETE OPTIMIZATION & BUG FIXES:
------------------------------------------------
FIXED: Duplicate _renderView method definitions causing conflicts
FIXED: Inaccurate record counting (now uses proper RPC search_count)
FIXED: Search state restoration issues and infinite loops
ENHANCED: Domain combination logic with deep copying
ENHANCED: Field type detection and search logic
ENHANCED: Error handling and graceful degradation
ENHANCED: Performance optimizations and memory management
ENHANCED: Arabic text normalization algorithms
ENHANCED: User interface feedback and loading states
Implementation Highlights:
-------------------------
* Fixed empty search handling - properly clears when deleting last character
* Fixed record clicking issue by using proper Odoo state management
* Improved field value formatting using Odoo's native rendering
* Enhanced Arabic text normalization and search capabilities
* Better error handling and fallback mechanisms
* Optimized performance and reduced server requests
- Uses official Odoo ListRenderer.include() pattern
- Implements proper trigger_up('do_search') for filtering
- Leverages RPC search_count for accurate record counting
- Builds standard Odoo domain syntax for maximum compatibility
- Maintains original view domains while adding search conditions
- Zero custom record rendering - uses Odoo's native methods
- Comprehensive field type support with intelligent matching
- Advanced Arabic text processing and normalization
""",
'depends': ['base', 'web'],
'author': "Fortutech IMS Pvt. Ltd.",
@ -57,4 +101,4 @@
"application": False,
"auto_install": False,
"images": ['static/description/banner.png'],
}
}

View File

@ -11,56 +11,127 @@
padding: 12px;
}
/* Search container styles */
/* Enhanced search container styles */
.oe_search_container {
background-color: #f8f9fa;
padding: 10px;
border-radius: 4px;
margin-bottom: 10px;
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
padding: 12px;
border-radius: 6px;
margin-bottom: 12px;
border: 1px solid #dee2e6;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
transition: all 0.3s ease;
}
.oe_search_container:hover {
box-shadow: 0 2px 6px rgba(0,0,0,0.15);
}
/* Enhanced search input styles */
.oe_search_input {
transition: all 0.3s ease;
border-radius: 4px;
font-size: 14px;
}
.oe_search_input:focus {
border-color: #007bff !important;
box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25);
box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25) !important;
outline: none;
background-color: #fff;
}
.oe_search_input::placeholder {
color: #6c757d;
font-style: italic;
}
/* Enhanced clear button */
.oe_clear_search {
min-width: 70px;
border-radius: 4px;
transition: all 0.2s ease;
}
.oe_clear_search:hover {
background-color: #6c757d !important;
border-color: #6c757d !important;
transform: translateY(-1px);
}
/* Enhanced search count display */
.oe_search_count {
color: #6c757d;
color: #28a745;
font-size: 0.9em;
font-weight: 500;
font-weight: 600;
padding: 4px 8px;
background-color: rgba(40, 167, 69, 0.1);
border-radius: 4px;
border: 1px solid rgba(40, 167, 69, 0.2);
transition: all 0.3s ease;
}
/* Loading indicator */
/* Enhanced loading indicator */
.oe_search_loading {
display: inline-block;
margin-left: 10px;
color: #007bff;
}
.oe_search_loading:after {
content: " ";
display: inline-block;
width: 16px;
height: 16px;
border-radius: 50%;
border: 2px solid #007bff;
border-color: #007bff transparent #007bff transparent;
animation: oe-search-spin 1.2s linear infinite;
.oe_search_loading i {
animation: enhanced-search-spin 1s linear infinite;
}
@keyframes oe-search-spin {
0% {
transform: rotate(0deg);
/* Responsive design improvements */
@media (max-width: 768px) {
.oe_search_container {
flex-direction: column;
gap: 10px;
}
100% {
transform: rotate(360deg);
.oe_search_input {
width: 100%;
margin-bottom: 10px;
}
.oe_clear_search,
.oe_search_count {
align-self: flex-start;
}
}
/* Enhanced loading animation */
@keyframes enhanced-search-spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
/* Accessibility improvements */
.oe_search_input:focus-visible {
outline: 2px solid #007bff;
outline-offset: 2px;
}
.oe_clear_search:focus-visible {
outline: 2px solid #007bff;
outline-offset: 2px;
}
/* Arabic text support enhancements */
.oe_search_input[dir="rtl"] {
text-align: right;
direction: rtl;
}
.oe_search_container[dir="rtl"] {
direction: rtl;
}
.oe_search_container[dir="rtl"] .oe_clear_search {
margin-right: 8px;
margin-left: 0;
}
.oe_search_container[dir="rtl"] .oe_search_count {
margin-right: 8px;
margin-left: 0;
}