= TicketChartsMacro - display ticket statistics charts = == Description == Make various types of charts regarding the number of tickets using Open Flash Charts. Chart types: * Pie charts. * Bar charts. * Stacked bar charts. The charts are created by the parameters that you give to the macro. See the examples below. All charts are clickable (see requirements) and will link to the query page of the graph. == Bugs/Feature Requests == Existing bugs and feature requests for TicketChartsMacro are [report:9?COMPONENT=TicketChartsMacro here]. If you have any issues, create a [http://trac-hacks.org/newticket?component=TicketChartsMacro&owner=aviram new ticket]. == Download == Download the zipped source from [download:ticketchartsmacro here]. == Source == You can check out TicketChartsMacro from [http://trac-hacks.org/svn/ticketchartsmacro here] using Subversion, or [source:ticketchartsmacro browse the source] with Trac. == Requirements == * [http://teethgrinder.co.uk/open-flash-chart-2/ Open Flash Charts] installed on your server - preferably [http://www.ofc2dz.com/ OFCDZ] to make the charts clickable. * Advanced Argument Parser for Trac Macros (AdvParseArgsPlugin). * Tested only on Trac 0.11.3. * Tested only on Apache configuration, but with proper configuration (see configuration section) this should work with any http server (including tracd). == Installation == * Download the source. * Copy the file TicketCharts.py to your project's plugins directory or to the global plugins directory, which is usually in: {{{ /usr/share/trac/plugins }}} * Enable TicketCharts plugin via the WebAdmin interface or by adding the following lines to the [components] section of trac.ini: {{{ ticketcharts.* = enabled }}} * Install Open Flash Charts 2 '''and its version 2 python bindings''' (everything can be downloaded from [http://teethgrinder.co.uk/open-flash-chart-2/ Open Flash Charts]). == Configuration == * The following configuration should appear in trac.ini: {{{ [ticket-charts] height = 300 width = 500 js_dir = /js json_dir = /js/json ofc_file = /OFCDZ.swf }}} * If this does not appear, default values will be used. * ''js_dir'', ''jsor_dir'' and ''ofc_file'' are the location '''on the http server''' of the Open Flash Charts files. * As you can see, the default '''ofc_file''' value is OFCDZ.swf, which is another implementation of Open Flash Charts, that make the bar charts clickable. You can download it from [http://www.ofc2dz.com/ OFCDZ]. == Macro arguments == Although I believe the examples show it all, I'll write here the arguments: * Arguments for all types of graphs: * '''type''' - The type of the graph. Can be pie, bars or stacked_bars. * '''height''', '''width''' - The height and width of the graph, in pixels. Percents will not work. If not specified, the values from trac.ini are taken (and if those aren't specified, then other default values are used). * '''title''' - Text that will be displayed on the top of the chart. * '''query''' - A Trac Query. All the stats will be taken from this query. It is important that everything in the query's parmeters will be under quotes. Examples: {{{ query = milestone="my_milestone"&owner="aviram"|"danny" }}} * '''ofc_file''', '''js_dir''', '''json_dir''' - Same as the variables in the macro's configuration. If these are specified, the configuration is ignored. * Arguments for '''pie''' graphs: * '''factor''' - The name of the field by which the stats will be formed. * Arguments for '''bar''' graphs: * '''x_axis''' - The name of the field by which the stats will be formed (The X Axis values). * Arguments for '''stacked bars''' graphs: * '''x_axis''' - The name of the field by which the stats will be formed (The X Axis values). * '''key''' - The name of the field by which the chart's columns are divided. == Examples with Snapshots == Number of tickets per milestone: {{{ [[TicketChart(type = pie, factor = milestone)]] }}} [[Image(pie_by_milestone.png)]] Number of tickets per status for milestone4: {{{ [[TicketChart(type = pie, factor = status, query = milestone="milestone4")]] }}} [[Image(pie_by_status.png)]] Number of tickets by status and owners: {{{ [[TicketChart(type = stacked_bars, key = owner, x_axis = status, height = 400, width = 600)]] }}} [[Image(stacked_bars.png)]] Number of tickets by status and owner for milestone1: {{{ [[TicketChart(type = stacked_bars, key = owner, x_axis = status, query = milestone="milestone1", title = Tickets by status and owner for milestone1)]] }}} [[Image(stacked_bars_for_milestone1.png)]] Number of tickets by owner and type: {{{ [[TicketChart(type = stacked_bars, key = type, x_axis = owner)]] }}} [[Image(stacked_bars_2.png)]] Number of tickets by status for milestone4: {{{ [[TicketChart(type = bars, x_axis = status, query = milestone="milestone4", title = Tickets by status for milestone4)]] }}} [[Image(bars_for_milestone4.png)]] == Recent Changes == [[ChangeLog(ticketchartsmacro, 3)]] == Author/Contributors == '''Author:''' [wiki:aviram] [[BR]] '''Contributors:'''