| 5 | Rather than have its own report format, TracReports relies on standard SQL |
| 6 | SELECT statements for custom report definition. |
| 7 | |
| 8 | A report consists of these basic parts: |
| 9 | * ID -- Unique (sequential) identifier |
| 10 | * Title -- Descriptive title |
| 11 | * Description -- A brief description of the report, in WikiFormatting text. |
| 12 | * Report Body -- List of results from report query, formatted according to the methods described below. |
| 13 | * Footer -- Links to alternative download formats for this report. |
| 14 | |
| 15 | |
| 16 | == Alternate Download Formats == |
| 17 | Aside from the default HTML view, reports can also be exported in a number of alternate formats. |
| 18 | At the bottom of the report page, you will find a list of available data formats. Click the desired link to |
| 19 | download the alternate report format. |
| 20 | |
| 21 | === Comma-delimited - CSV (Comma Separated Values) === |
| 22 | Export the report as plain text, each row on its own line, columns separated by a single comma (','). |
| 23 | '''Note:''' Column data is stripped from carriage returns, line feeds and commas to preserve structure. |
| 24 | |
| 25 | === Tab-delimited === |
| 26 | Like above, but uses tabs (\t) instead of comma. |
| 27 | |
| 28 | === RSS - XML Content Syndication === |
| 29 | All reports support syndication using XML/RSS 2.0. To subscribe to a , click the the orange 'XML' icon at the bottom of the page. See TracRss for general information on RSS support in Trac. |
| 30 | |
| 31 | == Changing Sort Order == |
| 32 | Simple reports - ungrouped reports to be specific - can be changed to be sorted by any column simply by clicking the column header. |
| 33 | |
| 34 | If a column header is a hyperlink (red), click the column you would like to sort by. Clicking the same header again reverses the order. |
| 35 | |
| 36 | ---- |
| 103 | === Special/Constant Variables === |
| 104 | There is one ''magic'' dynamic variable to allow practical reports, its value automatically set without having to change the URL. |
| 105 | |
| 106 | * $USER -- Username of logged in user. |
| 107 | |
| 108 | Example (''List all tickets assigned to me''): |
| 109 | {{{ |
| 110 | SELECT id AS ticket,summary FROM ticket WHERE owner='$USER' |
| 111 | }}} |
| 112 | |
| 113 | |
| 114 | ---- |
| 115 | |
| 116 | |
| 117 | == Advanced Reports: Custom Formatting == |
| 118 | Trac is also capable of more advanced reports, including custom layouts, |
| 119 | result grouping and user-defined CSS styles. To create such reports, we'll use |
| 120 | specialized SQL statements to control the output of the Trac report engine. |
| 121 | |
| 122 | == Special Columns == |
| 123 | To format reports, TracReports looks for 'magic' column names in the query |
| 124 | result. These 'magic' names are processed and affect the layout and style of the |
| 125 | final report. |
| 126 | |
| 127 | === Automatically formatted columns === |
| 128 | * '''ticket''' -- Ticket ID number. Becomes a hyperlink to that ticket. |
| 129 | * '''created, modified, date, time''' -- Format cell as a date and/or time. |
| 130 | * '''description''' -- Ticket description field, parsed through the wiki engine. |
| 131 | |
| 132 | '''Example:''' |
| 133 | {{{ |
| 134 | SELECT id as ticket, created, status, summary FROM ticket |
| 135 | }}} |
| 136 | |
| 137 | === Custom formatting columns === |
| 138 | Columns whose name begins and ends with '__' (Example: '''__color__''') are |
| 139 | assumed to be ''formatting hints'', affecting the appearance of the row. |
| 140 | |
| 141 | * '''___group___''' -- Group results based on values in this column. Each group will have its own header and table. |
| 142 | * '''___color___''' -- Should be a numeric value ranging from 1 to 5 to select a pre-defined row color. Typically used to color rows by issue priority. |
| 143 | * '''___style___''' --- A custom CSS style expression to use for the current row. |
| 144 | |
| 145 | '''Example:''' ''List active tickets, grouped by milestone, colored by priority'' |
| 146 | {{{ |
| 147 | SELECT p.value AS __color__, |
| 148 | t.milestone AS __group__, |
| 149 | (CASE owner WHEN 'daniel' THEN 'font-weight: bold; background: red;' ELSE '' END) AS __style__, |
| 150 | t.id AS ticket, summary |
| 151 | FROM ticket t,enum p |
| 152 | WHERE t.status IN ('new', 'assigned', 'reopened') |
| 153 | AND p.name=t.priority AND p.type='priority' |
| 154 | ORDER BY t.milestone, p.value, t.severity, t.time |
| 155 | }}} |
| 156 | |
| 157 | '''Note:''' A table join is used to match ''ticket'' priorities with their |
| 158 | numeric representation from the ''enum'' table. |
| 159 | |
| 160 | === Changing layout of report rows === |
| 161 | By default, all columns on each row are display on a single row in the HTML |
| 162 | report, possibly formatted according to the descriptions above. However, it's |
| 163 | also possible to create multi-line report entries. |
| 164 | |
| 165 | * '''column_''' -- ''Break row after this''. By appending an underscore ('_') to the column name, the remaining columns will be be continued on a second line. |
| 166 | |
| 167 | * '''_column_''' -- ''Full row''. By adding an underscore ('_') both at the beginning and the end of a column name, the data will be shown on a separate row. |
| 168 | |
| 169 | * '''_column''' -- ''Hide data''. Prepending an underscore ('_') to a column name instructs Trac to hide the contents from the HTML output. This is useful for information to be visible only if downloaded in other formats (like CSV or RSS/XML). |
| 170 | |
| 171 | '''Example:''' ''List active tickets, grouped by milestone, colored by priority, with description and multi-line layout'' |
| 172 | |
| 173 | {{{ |
| 174 | SELECT p.value AS __color__, |
| 175 | t.milestone AS __group__, |
| 176 | (CASE owner |
| 177 | WHEN 'daniel' THEN 'font-weight: bold; background: red;' |
| 178 | ELSE '' END) AS __style__, |
| 179 | t.id AS ticket, summary AS summary_, -- ## Break line here |
| 180 | component,version, severity, milestone, status, owner, |
| 181 | time AS created, changetime AS modified, -- ## Dates are formatted |
| 182 | description AS _description_, -- ## Uses a full row |
| 183 | changetime AS _changetime, reporter AS _reporter -- ## Hidden from HTML output |
| 184 | FROM ticket t,enum p |
| 185 | WHERE t.status IN ('new', 'assigned', 'reopened') |
| 186 | AND p.name=t.priority AND p.type='priority' |
| 187 | ORDER BY t.milestone, p.value, t.severity, t.time |
| 188 | }}} |
| 189 | |
| 190 | |
| 191 | ---- |