| 76 | | === Notes === |
| 77 | | Do not insert space characters between '{{{|}}}'-separated option values for ''radio'' and ''select'' fields. |
| 78 | | * ok: {{{FIELD_NAME.options = un|deux|trois}}} |
| 79 | | * invalid: {{{FIELD_NAME.options = un | deux | trois}}} |
| | 72 | ''Note: To make an entering an option for a `select` type field optional, specify a leading `|` in the `fieldname.options` option.'' |
| | 73 | |
| | 74 | === Reports Involving Custom Fields === |
| | 75 | |
| | 76 | The SQL required for TracReports to include custom ticket fields is relatively hard to get right. You need a `JOIN` with the `ticket_custom` field for every custom field that should be involved. |
| | 77 | |
| | 78 | The following example includes a custom ticket field named `progress` in the report: |
| | 79 | {{{ |
| | 80 | #!sql |
| | 81 | SELECT p.value AS __color__, |
| | 82 | id AS ticket, summary, component, version, milestone, severity, |
| | 83 | (CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner, |
| | 84 | time AS created, |
| | 85 | changetime AS _changetime, description AS _description, |
| | 86 | reporter AS _reporter, |
| | 87 | (CASE WHEN c.value = '0' THEN 'None' ELSE c.value END) AS progress |
| | 88 | FROM ticket t |
| | 89 | LEFT OUTER JOIN ticket_custom c ON (t.id = c.ticket AND c.name = 'progress') |
| | 90 | JOIN enum p ON p.name = t.priority AND p.type='priority' |
| | 91 | WHERE status IN ('new', 'assigned', 'reopened') |
| | 92 | ORDER BY p.value, milestone, severity, time |
| | 93 | }}} |
| | 94 | |
| | 95 | Note in particular the `LEFT OUTER JOIN` statement here. |