كيفية إضافة الألوان إلى صفوف وخلايا عرض القائمة في أودو
استخدم سمات decoration-* لترميز الصفوف والخلايا بالألوان في عروض قائمة أودو بناءً على قيم الحقول — مع صيغة التعبيرات وجميع أنواع الزخرفة وملاحظة الترحيل لإعادة التسمية من tree إلى list. موثق لأودو 18 و19.
تدعم عروض قائمة أودو التنسيق المرئي على مستوى الصف والخلية عبر سمات `decoration-*`. تقبل هذه السمات نفس صيغة تعبيرات Python التي تستخدمها `invisible` و`readonly` — تُقيَّم وفق قيم حقول الصف الحالي وتُطبّق فئة نص Bootstrap عندما يكون التعبير صحيحًا. هذا يجعل من السهل تمييز السجلات المتأخرة باللون الأحمر أو الطلبات المؤكدة باللون الأخضر أو الإدخالات المسودة بخط مائل دون كتابة أي JavaScript مخصص.
كيف يعمل تلوين صفوف عرض القائمة
تُوضع سمات الزخرفة على عنصر `` (المعروف سابقًا بـ ``) لتلوين الصفوف بالكامل، أو على عناصر `` الفردية داخل القائمة لتلوين تلك الخلية فقط. تأخذ كل سمة سلسلة تعبير Python. عندما يُقيَّم التعبير بـ `True` لسجل معين، يضيف أودو فئة CSS لـ Bootstrap المقابلة إلى عنصر الصف أو الخلية.
مرجع سمات الزخرفة
| السمة | فئة CSS المطبّقة | التأثير المرئي | حالة الاستخدام الشائعة |
|---|---|---|---|
| decoration-success | text-success | نص أخضر | سجلات مؤكدة أو منتهية أو مدفوعة |
| decoration-warning | text-warning | نص برتقالي / كهرماني | سجلات معلقة أو قيد التنفيذ أو تحتاج انتباهًا |
| decoration-danger | text-danger | نص أحمر | سجلات متأخرة أو ملغاة أو محظورة أو بها أخطاء |
| decoration-info | text-info | نص أزرق / سماوي | سجلات إعلامية أو مسودة أو جديدة |
| decoration-muted | text-muted | نص رمادي / خافت | سجلات مؤرشفة أو غير نشطة أو ملغاة |
| decoration-primary | text-primary | لون العلامة التجارية الأساسي | سجلات مميزة أو محددة |
| decoration-bf | fw-bold (وزن خط عريض) | نص عريض | الصفوف المهمة والإجماليات والأولوية العالية |
| decoration-it | fst-italic (أسلوب خط مائل) | نص مائل | السجلات المسودة أو التقديرية أو المؤقتة |
الزخرفة على مستوى الصف (الصف بأكمله)
<!-- Row-level decoration on the <list> element -->
<!-- Each decoration-* attribute colours ALL cells of a matching row -->
<list decoration-success="state == 'sale'"
decoration-warning="state == 'draft'"
decoration-danger="date_deadline and date_deadline < current_date"
decoration-muted="state == 'cancel'"
decoration-bf="priority == '2'"
decoration-it="state == 'draft'">
<field name="name"/>
<field name="partner_id"/>
<field name="date_deadline"/>
<field name="amount_total"/>
<field name="state"/>
<field name="priority" column_invisible="True"/>
<!-- ↑ Include fields used in expressions even if not shown as columns -->
</list>الزخرفة على مستوى الخلية (حقل فردي)
يمكنك أيضًا تطبيق `decoration-*` على عنصر `` فردي داخل القائمة. تُطبَّق الزخرفة عندئذٍ فقط على خلية ذلك العمود، تاركةً بقية الصف بدون تنسيق. هذا مفيد عندما تريد تمييز قيمة محددة — مثل جعل التواريخ المتأخرة حمراء مع إبقاء الصف نفسه محايدًا.
<!-- Cell-level decoration — only that field's cell is styled -->
<list>
<field name="name"/>
<field name="partner_id"/>
<!-- Colour the deadline cell based on urgency -->
<field name="date_deadline"
decoration-danger="date_deadline and date_deadline < current_date"
decoration-warning="date_deadline and date_deadline == current_date"/>
<!-- Highlight the amount when it exceeds a threshold -->
<field name="amount_total"
decoration-success="amount_total >= 10000"
decoration-warning="amount_total > 0 and amount_total < 10000"
decoration-muted="amount_total == 0"/>
<field name="state"
decoration-success="state == 'sale'"
decoration-danger="state == 'cancel'"
decoration-it="state == 'draft'"/>
</list>إعادة التسمية من tree إلى list (أودو 16)
| إصدار أودو | عنصر <tree> | عنصر <list> | دعم decoration-* | التوصية |
|---|---|---|---|---|
| أودو 15 | ✓ الاسم الرسمي | ✗ غير معروف | ✓ مدعوم على <tree> | استخدم <tree> |
| أودو 16 | ✓ اسم مستعار (يعمل) | ✓ الاسم الرسمي الجديد | ✓ مدعوم على كليهما | استخدم <list>، انقل <tree> |
| أودو 17 | ✓ الاسم المستعار محتفظ به | ✓ رسمي | ✓ مدعوم على كليهما | استخدم <list> |
| أودو 18 و19 | ✓ الاسم المستعار محتفظ به | ✓ رسمي | ✓ مدعوم على كليهما | استخدم <list> |
دمج زخارف متعددة
يمكنك دمج زخارف الألوان مع زخارف الخط على نفس العنصر. عندما تكون تعبيرات زخرفة متعددة صحيحة في آنٍ واحد، تُطبَّق جميع فئات CSS المطابقة. النمط الشائع هو عريض + لون للسجلات ذات الأولوية.
<!-- Bold + red for high-priority overdue records -->
<list decoration-danger="priority == '2' and date_deadline and date_deadline < current_date"
decoration-bf="priority == '2'"
decoration-warning="state == 'draft'"
decoration-it="state == 'draft'"
decoration-muted="state == 'cancel'">
<field name="name"/>
<field name="date_deadline"/>
<field name="state"/>
<field name="priority" column_invisible="True"/>
</list>استخدام current_date في تعبيرات الزخرفة
`current_date` هو متغير خاص متاح في تعبيرات زخرفة عرض القائمة (وفي سلاسل النطاق). يحمل تاريخ اليوم ككائن `datetime.date`، مما يتيح مقارنات التاريخ دون ترميز القيم. كما هو متاح كسلسلة نصية بتنسيق ISO (`'YYYY-MM-DD'`) عند استخدامه في سلاسل النطاق.
<!-- Highlight overdue records (deadline passed) in red -->
<!-- Highlight due-today records in orange -->
<!-- Highlight upcoming (within 7 days) in info blue -->
<list
decoration-danger="date_deadline and date_deadline < current_date"
decoration-warning="date_deadline and date_deadline == current_date"
decoration-info="date_deadline and date_deadline > current_date">
<field name="name"/>
<field name="date_deadline"/>
</list>استكشاف الأخطاء
| الأعراض | السبب المحتمل | الحل |
|---|---|---|
| الزخرفة لا تُطبَّق أبدًا — تظل الصفوف بدون تنسيق | الحقل المستخدم في التعبير غير محمّل (غير مضمّن كعنصر <field> في القائمة) | أضف الحقل مع column_invisible="True" لكي يحمّل أودو القيمة لتقييم التعبير. |
| خطأ تحليل XML عند استخدام < أو > في التعبير | < و> هي أحرف XML محجوزة ويجب تحويلها داخل قيم السمات | استبدل < بـ < و> بـ > داخل سلسلة سمة الزخرفة. |
| الزخرفة تُطبَّق على صفوف خاطئة (صحيحة دائمًا أو خاطئة دائمًا) | يستند التعبير إلى حقل قيمته دائمًا متشابهة (مثلًا معرّف علائقي بدلًا من قيمة الاختيار) | تحقق من نوع الحقل: تستخدم حقول الاختيار قيمًا نصية مثل 'done' وليس أعدادًا صحيحة. تقارن حقول Many2one المعرّفات (أعداد صحيحة) وليس أسماء العرض. |
| زخرفتا لون نشطتان معًا — يظهر لون غير متوقع | تعبيران للزخرفة صحيحان في آنٍ واحد؛ خصوصية CSS تحدد أيهما يفوز | اجعل التعبيرات متنافية حصريًا باستخدام 'and not' أو 'and state != ...' لضمان أن واحدًا فقط يكون صحيحًا في أي وقت. |
| decoration-bf أو decoration-it غير مرئيَّين | CSS لقالب مخصص يتجاوز فئات Bootstrap fw-bold أو fst-italic | افحص عنصر الصف في أدوات المطوّر بالمتصفح لتأكيد إضافة الفئة. إذا كانت متجاوَزة، أضف قاعدة CSS مخصصة في SCSS وحدتك مع !important أو خصوصية أعلى. |
ملاحظات الإصدار
| إصدار أودو | التغييرات الرئيسية المؤثرة على زخرفة عرض القائمة |
|---|---|
| أودو 15 | سمات decoration-* مدعومة على <tree>. attrs تُستخدم لرؤية الصف (مهملة في أودو 16). current_date متاح. |
| أودو 16 | تمت إعادة تسمية <tree> إلى <list> (الاسم المستعار محتفظ به). إهمال attrs — استخدم invisible على <field>. تم تقديم column_invisible لإخفاء الأعمدة. |
| أودو 17 | حذف attrs. <list> رسمي؛ <tree> محتفظ به كاسم مستعار. واجهة API لـ decoration-* لم تتغير. فئات Bootstrap 5 (fw-bold وfst-italic) تحل محل أسماء Bootstrap 4 القديمة لـ decoration-bf/decoration-it. |
| أودو 18 و19 | لا توجد تغييرات كاسرة لسمات decoration-*. <list> رسمي، الاسم المستعار <tree> لا يزال يعمل. |
تحتاج تنسيقًا مخصصًا لعرض القائمة أو ترقية كاملة لوحدة أودو؟
يتولى مطورونا المعتمدون من أودو تخصيص العروض وترقية الوحدات من أودو 15 إلى 18/19 والتحقق الكامل من الامتثال للشركات السعودية — ZATCA وGOSI وPDPL.
الأسئلة الشائعة
هل يمكنني استخدام decoration-* على الأزرار أو عناصر أخرى داخل عرض القائمة؟
لماذا لا يعمل decoration-danger على date_deadline عندما يكون الحقل فارغًا؟
هل يمكنني تطبيق لون خلفية بدلًا من لون النص فقط؟
هل decoration-* متاح في عروض Kanban أو النموذج؟
هل يمكنني دمج decoration-bf (عريض) مع لون مثل decoration-danger؟
عرض القائمة لديه شروط زخرفة كثيرة وبات من الصعب قراءته. هل هناك نهج أنظف؟

iWesabe Editorial Team
رؤى عملية حول Odoo ERP وامتثال ZATCA والعمليات الرقمية للشركات السعودية — بقلم فرق الاستشارات والمالية والهندسة في iWesabe.
مقالات ذات صلة
السياق والنطاق في أودو — مرجع المطوّر (أودو 16–19)
دليل عملي لنطاقات أودو (تصفية السجلات) والسياق (تمرير الحالة كأزواج مفتاح-قيمة) — كيف تعمل وأين تظهر وقواعد الصيغة من أودو 16 إلى أودو 19. موثق لأودو 18 و19.
إهمال attrs في أودو: الانتقال إلى invisible وreadonly وrequired في أودو 16–19
تم إهمال قاموس attrs في أودو 16 وحذفه في أودو 17. يحدد هذا الدليل كل نمط attrs ومقابله من السمات المباشرة — مع كود قبل/بعد لحالات الاستخدام الأكثر شيوعًا. موثق لأودو 18 و19.