diff --git a/odex25_base/am_sar_symbol/static/src/js/sar_symbol.js b/odex25_base/am_sar_symbol/static/src/js/sar_symbol.js index c4a94b716..cc35264f8 100644 --- a/odex25_base/am_sar_symbol/static/src/js/sar_symbol.js +++ b/odex25_base/am_sar_symbol/static/src/js/sar_symbol.js @@ -6,12 +6,6 @@ (function() { 'use strict'; - // تجنب التشغيل المتكرر - if (window.SarSymbolSystem && window.SarSymbolSystem.initialized) { - console.log('SAR Symbol System already initialized'); - return; - } - // رمز العملة السعودية الجديد const SAR_SYMBOLS = [ '﷼', // الرمز الكلاسيكي @@ -106,10 +100,10 @@ } }); - // فحص شامل كـ fallback - فقط العناصر الصغيرة + // فحص شامل كـ fallback const allElements = document.querySelectorAll('*'); allElements.forEach(element => { - if (element.textContent && element.textContent.length < 100) { // تقليل الحد لتحسين الأداء + if (element.textContent && element.textContent.length < 200) { // تجنب النصوص الطويلة checkElement(element); } }); @@ -150,57 +144,38 @@ } /** - * معالج خاص للحقول النقدية في أودو - مع حماية من التكرار + * معالج خاص للحقول النقدية في أودو */ function handleOdooMonetaryFields() { - // التأكد من أن أودو موجود وأن الخدمة لم يتم تعريفها من قبل + // مراقبة تحديثات البيانات في أودو if (window.odoo && window.odoo.define) { - // فحص إذا كانت الخدمة معرفة مسبقاً - const serviceName = 'sar_symbol.field_utils_' + Date.now(); // اسم فريد - - try { - window.odoo.define(serviceName, function (require) { - 'use strict'; + window.odoo.define('sar_symbol.field_utils', function (require) { + 'use strict'; + + const fieldUtils = require('web.field_utils'); + const originalFormatMonetary = fieldUtils.format.monetary; + + fieldUtils.format.monetary = function(value, field, options) { + const result = originalFormatMonetary.apply(this, arguments); - try { - const fieldUtils = require('web.field_utils'); - - // التأكد من أن الدالة لم يتم تعديلها من قبل - if (fieldUtils.format.monetary && !fieldUtils.format.monetary._sarModified) { - const originalFormatMonetary = fieldUtils.format.monetary; - - fieldUtils.format.monetary = function(value, field, options) { - const result = originalFormatMonetary.apply(this, arguments); - - // إذا كان النتيجة تحتوي على رمز العملة السعودية - if (result && containsSarSymbol(result)) { - // سنحتاج لمعالجة هذا في DOM لاحقاً - setTimeout(() => { - const elements = document.querySelectorAll('[data-field-type="monetary"]'); - elements.forEach(element => { - if (element.textContent && containsSarSymbol(element.textContent)) { - applySarFont(element); - } - }); - }, 100); + // إذا كان النتيجة تحتوي على رمز العملة السعودية + if (result && containsSarSymbol(result)) { + // سنحتاج لمعالجة هذا في DOM لاحقاً + setTimeout(() => { + const elements = document.querySelectorAll('[data-field-type="monetary"]'); + elements.forEach(element => { + if (element.textContent && containsSarSymbol(element.textContent)) { + applySarFont(element); } - - return result; - }; - - // وضع علامة على أن الدالة تم تعديلها - fieldUtils.format.monetary._sarModified = true; - } - - return fieldUtils; - } catch (innerError) { - console.warn('SAR Symbol: Could not modify field_utils:', innerError); - return {}; + }); + }, 100); } - }); - } catch (error) { - console.warn('SAR Symbol: Could not define Odoo service:', error); - } + + return result; + }; + + return fieldUtils; + }); } } @@ -210,42 +185,33 @@ function initialize() { console.log('SAR Symbol Font System: Initializing...'); - try { - // فحص أولي - scanAllElements(); - - // إعداد المراقبة - setupDOMObserver(); - - // معالجة خاصة لأودو (بحماية من الأخطاء) - handleOdooMonetaryFields(); - - // فحص دوري (للتأكد) - مع فترة أطول لتوفير الموارد - setInterval(scanAllElements, 10000); // 10 ثوان بدلاً من 5 - - console.log('SAR Symbol Font System: Ready'); - } catch (error) { - console.error('SAR Symbol Font System: Initialization failed:', error); - } + // فحص أولي + scanAllElements(); + + // إعداد المراقبة + setupDOMObserver(); + + // معالجة خاصة لأودو + handleOdooMonetaryFields(); + + // فحص دوري (للتأكد) + setInterval(scanAllElements, 5000); + + console.log('SAR Symbol Font System: Ready'); } - // تشغيل النظام مع حماية من الأخطاء - try { - if (document.readyState === 'loading') { - document.addEventListener('DOMContentLoaded', initialize); - } else { - initialize(); - } - } catch (error) { - console.error('SAR Symbol Font System: Failed to start:', error); + // تشغيل النظام + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', initialize); + } else { + initialize(); } - // تصدير للاستخدام الخارجي مع حماية + // تصدير للاستخدام الخارجي window.SarSymbolSystem = { scan: scanAllElements, check: checkElement, - apply: applySarFont, - initialized: true + apply: applySarFont }; })(); \ No newline at end of file