如何按组件为 Trac 报告中的票证着色?

How to color tickets in a Trac report by component?

在 Trac (1.2) 中,我想创建一个报告,其中所有工单按修改时间排序,其中颜色应指示组件(或是否已关闭)。

我假设通过 component 设置 __color__ 可以解决问题,但是接下来的报告显示所有有效票证为白色:

SELECT 
  DISTINCT 
   component AS __color__,
   (CASE status 
      WHEN 'closed' THEN 'color: #777; background: #ddd; border-color: #ccc;'
    END) AS __style__,
   id AS ticket, summary, component, milestone, status, resolution, 
   t.time AS created, changetime AS modified,
   priority AS _priority, reporter AS _reporter, cc AS _cc
  FROM ticket t
  LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
  LEFT JOIN ticket_change tc ON id = tc.ticket
  ORDER BY
    changetime DESC

如何根据工单所指的组件更改颜色?

__color__ 只能用于值为 1 到 5 的枚举,请参阅 documentation。你可以这样做:

(CASE component 
   WHEN 'component1' THEN 'background: #ff5733;'
   WHEN 'component2' THEN 'background: #3339ff;'
   WHEN 'component3' THEN 'background: #e9ff33;'
 END) AS __style__,

受@RjOllos 回答的启发,我选择使用 case 语句设置 __color__

(CASE component
   WHEN 'COMPONENT1' THEN 1
   WHEN 'COMPONENT2' THEN 2
   WHEN 'COMPONENT3a' THEN 4
   WHEN 'COMPONENT3b' THEN 4
   WHEN 'COMPONENT4' THEN 5
   ELSE 3
 END) AS __color__,

这样做的好处是各行的颜色保持交替。