View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0010589 | mantisbt | reports | public | 2009-06-14 03:05 | 2014-10-27 10:48 |
Reporter | Kirill | Assigned To | dhx | ||
Priority | normal | Severity | feature | Reproducibility | have not tried |
Status | closed | Resolution | won't fix | ||
Product Version | git trunk | ||||
Summary | 0010589: font and other implements for jpgraph | ||||
Description |
| ||||
Tags | patch | ||||
Attached Files | jpgraph.patch (13,571 bytes)
From 470728fcc8f44fbe676c3fc424afdd42a46910c6 Mon Sep 17 00:00:00 2001 From: Kirill Krasnov <krasnovforum@gmail.com> Date: Sun, 14 Jun 2009 08:54:20 +0300 Subject: [PATCH] JpGraph modify --- config_defaults_inc.php | 29 +++++++++++- core/graph_api.php | 73 ++++++++++++++++++++---------- docbook/adminguide/en/configuration.sgml | 2 +- 3 files changed, 77 insertions(+), 27 deletions(-) diff --git a/config_defaults_inc.php b/config_defaults_inc.php index d8ad7d6..99cefd8 100644 --- a/config_defaults_inc.php +++ b/config_defaults_inc.php @@ -1024,7 +1024,7 @@ * path to jpgraph installation - dont forget the ending slash! * @global string $g_jpgraph_path */ - $g_jpgraph_path = '.' . DIRECTORY_SEPARATOR . 'jpgraph' . DIRECTORY_SEPARATOR; + $g_jpgraph_path = '.' . DIRECTORY_SEPARATOR . 'library' . DIRECTORY_SEPARATOR . 'jpgraph' . DIRECTORY_SEPARATOR; /** * use antialiasing - Enabling anti-aliasing will greatly improve the visual apperance of certain graphs. @@ -1035,13 +1035,38 @@ /** * what truetype font will the graphs use. Allowed values are 'arial', 'verdana', 'courier', 'book', 'comic', 'times', - * 'georgia', 'trebuche', 'vera', 'veramono', or 'veraserif'. Refer to the jpgraph manual for details. + * 'georgia', 'trebuche', 'vera', 'veramono', 'veraserif', 'dv_sansserif', 'dv_serif', 'dv_sansserif', 'dv_serifcond', + * or 'dv_sansserifcond'. Refer to the jpgraph manual for details. * NOTE: these fonts need to be installed in the TTF_DIR as specified to jpgraph * @global string $g_graph_font */ $g_graph_font = ''; /** + * font size for graph title + * @global int $g_title_fontsize + */ + $g_title_fontsize = 10; + + /** + * font size for graph subtitle + * @global int $g_subtitle_fontsize + */ + $g_subtitle_fontsize = 9; + + /** + * font size for graph axis + * @global int $g_axis_fontsize + */ + $g_axis_fontsize = 8; + + /** + * font size for graph legend + * @global int $g_legend_fontsize + */ + $g_legend_fontsize = 8; + + /** * what width is used to scale the graphs. * @global int $g_graph_window_width */ diff --git a/core/graph_api.php b/core/graph_api.php index cd1e23b..b5b1c28 100644 --- a/core/graph_api.php +++ b/core/graph_api.php @@ -45,6 +45,11 @@ function graph_get_font() { 'vera' => FF_VERA, 'veramono' => FF_VERAMONO, 'veraserif' => FF_VERASERIF, + 'dv_sansserif' => FF_DV_SANSSERIF, + 'dv_serif' => FF_DV_SERIF, + 'dv_sansserif' => FF_DV_SANSSERIFMONO, + 'dv_serifcond' => FF_DV_SERIFCOND, + 'dv_sansserifcond' => FF_DV_SANSSERIFCOND, ); $t_font = config_get( 'graph_font', '' ); @@ -62,6 +67,10 @@ function graph_get_font() { function graph_bar( $p_metrics, $p_title = '', $p_graph_width = 350, $p_graph_height = 400 ) { $t_graph_font = graph_get_font(); + $t_font_size_axis = config_get( 'axis_fontsize', 8 ); + $t_font_size_legend = config_get( 'legend_fontsize', 8 ); + $t_font_size_title = config_get( 'title_fontsize', 10 ); + $t_font_size_subtitle = config_get( 'subtitle_fontsize', 9 ); error_check( is_array( $p_metrics ) ? array_sum( $p_metrics ) : 0, $p_title ); @@ -74,7 +83,7 @@ function graph_bar( $p_metrics, $p_title = '', $p_graph_width = 350, $p_graph_he $graph->SetMarginColor( 'white' ); $graph->SetFrame( false ); $graph->title->Set( $p_title ); - $graph->title->SetFont( $t_graph_font, FS_BOLD ); + $graph->title->SetFont( $t_graph_font, FS_BOLD, $t_font_size_title ); $graph->xaxis->SetTickLabels( array_keys( $p_metrics ) ); if( FF_FONT2 <= $t_graph_font ) { $graph->xaxis->SetLabelAngle( 60 ); @@ -83,12 +92,12 @@ function graph_bar( $p_metrics, $p_title = '', $p_graph_width = 350, $p_graph_he # can't rotate non truetype fonts } - $graph->xaxis->SetFont( $t_graph_font ); + $graph->xaxis->SetFont( $t_graph_font, FS_NORMAL, $t_font_size_axis ); - $graph->legend->SetFont( $t_graph_font ); + $graph->legend->SetFont( $t_graph_font, FS_NORMAL, $t_font_size_legend ); $graph->yaxis->scale->ticks->SetDirection( -1 ); - $graph->yaxis->SetFont( $t_graph_font ); + $graph->yaxis->SetFont( $t_graph_font, FS_NORMAL, $t_font_size_axis ); $p1 = new BarPlot( array_values( $p_metrics ) ); $p1->SetFillColor( 'yellow' ); @@ -96,7 +105,7 @@ function graph_bar( $p_metrics, $p_title = '', $p_graph_width = 350, $p_graph_he $graph->Add( $p1 ); if( helper_show_queries() ) { $graph->subtitle->Set( db_count_queries() . ' queries (' . db_time_queries() . 'sec)' ); - $graph->subtitle->SetFont( $t_graph_font, FS_NORMAL, 8 ); + $graph->subtitle->SetFont( $t_graph_font, FS_NORMAL, $t_font_size_subtitle ); } $graph->Stroke(); @@ -111,6 +120,10 @@ function graph_group( $p_metrics, $p_title = '', $p_graph_width = 350, $p_graph_ # $p_metrics['closed'] $t_graph_font = graph_get_font(); + $t_font_size_axis = config_get( 'axis_fontsize', 8 ); + $t_font_size_legend = config_get( 'legend_fontsize', 8 ); + $t_font_size_title = config_get( 'title_fontsize', 10 ); + $t_font_size_subtitle = config_get( 'subtitle_fontsize', 9 ); # count up array portions that are set $t_count = 0; @@ -134,7 +147,7 @@ function graph_group( $p_metrics, $p_title = '', $p_graph_width = 350, $p_graph_ $graph->SetScale( 'textlin' ); $graph->SetMarginColor( 'white' ); $graph->SetFrame( false ); - $graph->title->SetFont( $t_graph_font, FS_BOLD ); + $graph->title->SetFont( $t_graph_font, FS_BOLD, $t_font_size_title ); $graph->title->Set( $p_title ); $graph->xaxis->SetTickLabels( array_keys( $p_metrics['open'] ) ); if( FF_FONT2 <= $t_graph_font ) { @@ -144,12 +157,12 @@ function graph_group( $p_metrics, $p_title = '', $p_graph_width = 350, $p_graph_ # can't rotate non truetype fonts } - $graph->xaxis->SetFont( $t_graph_font ); + $graph->xaxis->SetFont( $t_graph_font, FS_NORMAL, $t_font_size_axis ); $graph->legend->Pos( 0.05, 0.08 ); - $graph->legend->SetFont( $t_graph_font ); + $graph->legend->SetFont( $t_graph_font, FS_NORMAL, $t_font_size_legend ); $graph->yaxis->scale->ticks->SetDirection( -1 ); - $graph->yaxis->SetFont( $t_graph_font ); + $graph->yaxis->SetFont( $t_graph_font, FS_NORMAL, $t_font_size_axis ); $graph->yscale->SetGrace( 10 ); # adds on the same graph @@ -190,19 +203,23 @@ function graph_group( $p_metrics, $p_title = '', $p_graph_width = 350, $p_graph_ function graph_pie( $p_metrics, $p_title = '', $p_graph_width = 500, $p_graph_height = 350, $p_center = 0.4, $p_poshorizontal = 0.10, $p_posvertical = 0.09 ) { $t_graph_font = graph_get_font(); + $t_font_size_axis = config_get( 'axis_fontsize', 8 ); + $t_font_size_legend = config_get( 'legend_fontsize', 8 ); + $t_font_size_title = config_get( 'title_fontsize', 10 ); + $t_font_size_subtitle = config_get( 'subtitle_fontsize', 9 ); error_check( is_array( $p_metrics ) ? array_sum( $p_metrics ) : 0, $p_title ); $graph = new PieGraph( $p_graph_width, $p_graph_height ); $graph->img->SetMargin( 40, 40, 40, 100 ); $graph->title->Set( $p_title ); - $graph->title->SetFont( $t_graph_font, FS_BOLD ); + $graph->title->SetFont( $t_graph_font, FS_BOLD, $t_font_size_title ); $graph->SetMarginColor( 'white' ); $graph->SetFrame( false ); $graph->legend->Pos( $p_poshorizontal, $p_posvertical ); - $graph->legend->SetFont( $t_graph_font ); + $graph->legend->SetFont( $t_graph_font, FS_NORMAL, $t_font_size_legend ); $p1 = new PiePlot3d( array_values( $p_metrics ) ); @@ -217,12 +234,12 @@ function graph_pie( $p_metrics, $p_title = '', $p_graph_width = 500, $p_graph_he # Label format $p1->value->SetFormat( '%2.0f' ); $p1->value->Show(); - $p1->value->SetFont( $t_graph_font ); + $p1->value->SetFont( $t_graph_font, FS_NORMAL, $t_font_size_legend ); $graph->Add( $p1 ); if( helper_show_queries() ) { $graph->subtitle->Set( db_count_queries() . ' queries (' . db_time_queries() . 'sec)' ); - $graph->subtitle->SetFont( $t_graph_font, FS_NORMAL, 8 ); + $graph->subtitle->SetFont( $t_graph_font, FS_NORMAL, $t_font_size_subtitle ); } $graph->Stroke(); } @@ -231,6 +248,10 @@ function graph_pie( $p_metrics, $p_title = '', $p_graph_width = 500, $p_graph_he function graph_cumulative_bydate( $p_metrics, $p_graph_width = 300, $p_graph_height = 380 ) { $t_graph_font = graph_get_font(); + $t_font_size_axis = config_get( 'axis_fontsize', 8 ); + $t_font_size_legend = config_get( 'legend_fontsize', 8 ); + $t_font_size_title = config_get( 'title_fontsize', 10 ); + $t_font_size_subtitle = config_get( 'subtitle_fontsize', 9 ); error_check( is_array( $p_metrics ) ? count( $p_metrics ) : 0, lang_get( 'cumulative' ) . ' ' . lang_get( 'by_date' ) ); foreach( $p_metrics as $i => $vals ) { @@ -253,17 +274,17 @@ function graph_cumulative_bydate( $p_metrics, $p_graph_width = 300, $p_graph_hei $graph->SetMarginColor( 'white' ); $graph->SetFrame( false ); $graph->title->Set( lang_get( 'cumulative' ) . ' ' . lang_get( 'by_date' ) ); - $graph->title->SetFont( $t_graph_font, FS_BOLD ); + $graph->title->SetFont( $t_graph_font, FS_BOLD, $t_font_size_title ); $graph->legend->Pos( 0.05, 0.9, 'right', 'bottom' ); $graph->legend->SetShadow( false ); $graph->legend->SetFillColor( 'white' ); $graph->legend->SetLayout( LEGEND_HOR ); - $graph->legend->SetFont( $t_graph_font ); + $graph->legend->SetFont( $t_graph_font, FS_NORMAL, $t_font_size_legend ); $graph->yaxis->scale->ticks->SetDirection( -1 ); - $graph->yaxis->SetFont( $t_graph_font ); - $graph->y2axis->SetFont( $t_graph_font ); + $graph->yaxis->SetFont( $t_graph_font, FS_NORMAL, $t_font_size_axis ); + $graph->y2axis->SetFont( $t_graph_font, FS_NORMAL, $t_font_size_axis ); if( FF_FONT2 <= $t_graph_font ) { $graph->xaxis->SetLabelAngle( 60 ); @@ -273,7 +294,7 @@ function graph_cumulative_bydate( $p_metrics, $p_graph_width = 300, $p_graph_hei # can't rotate non truetype fonts } $graph->xaxis->SetLabelFormatCallback( 'graph_date_format' ); - $graph->xaxis->SetFont( $t_graph_font ); + $graph->xaxis->SetFont( $t_graph_font, FS_NORMAL, $t_font_size_axis ); $p1 = new LinePlot( $reported_plot, $plot_date ); $p1->SetColor( 'blue' ); @@ -295,7 +316,7 @@ function graph_cumulative_bydate( $p_metrics, $p_graph_width = 300, $p_graph_hei if( helper_show_queries() ) { $graph->subtitle->Set( db_count_queries() . ' queries (' . db_time_queries() . 'sec)' ); - $graph->subtitle->SetFont( $t_graph_font, FS_NORMAL, 8 ); + $graph->subtitle->SetFont( $t_graph_font, FS_NORMAL, $t_font_size_subtitle ); } $graph->Stroke(); } @@ -304,6 +325,10 @@ function graph_cumulative_bydate( $p_metrics, $p_graph_width = 300, $p_graph_hei function graph_bydate( $p_metrics, $p_labels, $p_title, $p_graph_width = 300, $p_graph_height = 380 ) { $t_graph_font = graph_get_font(); + $t_font_size_axis = config_get( 'axis_fontsize', 8 ); + $t_font_size_legend = config_get( 'legend_fontsize', 8 ); + $t_font_size_title = config_get( 'title_fontsize', 10 ); + $t_font_size_subtitle = config_get( 'subtitle_fontsize', 9 ); error_check( is_array( $p_metrics ) ? count( $p_metrics ) : 0, lang_get( 'by_date' ) ); $graph = new Graph( $p_graph_width, $p_graph_height ); @@ -315,16 +340,16 @@ function graph_bydate( $p_metrics, $p_labels, $p_title, $p_graph_width = 300, $p $graph->SetMarginColor( 'white' ); $graph->SetFrame( false ); $graph->title->Set( $p_title . ' ' . lang_get( 'by_date' ) ); - $graph->title->SetFont( $t_graph_font, FS_BOLD ); + $graph->title->SetFont( $t_graph_font, FS_BOLD, $t_font_size_title ); $graph->legend->Pos( 0.01, 0.05, 'right', 'top' ); $graph->legend->SetShadow( false ); $graph->legend->SetFillColor( 'white' ); $graph->legend->SetLayout( LEGEND_VERT ); - $graph->legend->SetFont( $t_graph_font ); + $graph->legend->SetFont( $t_graph_font, FS_NORMAL, $t_font_size_legend ); $graph->yaxis->scale->ticks->SetDirection( -1 ); - $graph->yaxis->SetFont( $t_graph_font ); + $graph->yaxis->SetFont( $t_graph_font, FS_NORMAL, $t_font_size_axis ); $graph->yaxis->scale->SetAutoMin( 0 ); if( FF_FONT2 <= $t_graph_font ) { @@ -335,7 +360,7 @@ function graph_bydate( $p_metrics, $p_labels, $p_title, $p_graph_width = 300, $p # can't rotate non truetype fonts } $graph->xaxis->SetLabelFormatCallback( 'graph_date_format' ); - $graph->xaxis->SetFont( $t_graph_font ); + $graph->xaxis->SetFont( $t_graph_font, FS_NORMAL, $t_font_size_axis ); $t_line_colours = config_get( 'graph_colors' ); $t_count_colours = count( $t_line_colours ); @@ -351,7 +376,7 @@ function graph_bydate( $p_metrics, $p_labels, $p_title, $p_graph_width = 300, $p if( helper_show_queries() ) { $graph->subtitle->Set( db_count_queries() . ' queries (' . db_time_queries() . 'sec)' ); - $graph->subtitle->SetFont( $t_graph_font, FS_NORMAL, 8 ); + $graph->subtitle->SetFont( $t_graph_font, FS_NORMAL, $t_font_size_subtitle ); } $graph->Stroke(); } diff --git a/docbook/adminguide/en/configuration.sgml b/docbook/adminguide/en/configuration.sgml index b974e14..5777281 100644 --- a/docbook/adminguide/en/configuration.sgml +++ b/docbook/adminguide/en/configuration.sgml @@ -954,7 +954,7 @@ <ulink url="http://www.aditus.nu/jpgraph/index.php">JpGraph</ulink> package. You can place the package whereever you want, but you have to set the var in jpgraph.php eg. - DEFINE("DIR_BASE","/www/mantisbt/jpgraph/"); + DEFINE("DIR_BASE","/www/mantisbt/library/jpgraph/"); </para> </note> -- 1.6.2.2.1669.g7eaf8 | ||||
Looks good! I can't use your patch directly anymore because of the changes that have been made recently to the graph plugin, but I'll try and replicate it as much as possible (unless you want to try). I suggest moving all the configuration options into the Graph plugin (from the main configuration file). |
|
Please also update the configuration section in the Docbook manual. |
|
Victor, Paul remade all graph-api. I made this changes before he made JpGraph as plugin. I think this Issue must close. |
|
However your patch did highlight the need for Mantis to support some of the newer font names (DejaVu) that are supported by jpgraph. I think I'll fix that and then call this ticket closed (for now). We need to properly move jpgraph configuration from the Mantis core to the MantisGraph plugin later on. A better approach may be to copy what SourceIntegration does with sub-plugins for WebSVN, Gitweb, etc. |
|
I've decided not to add support for the DejaVu fonts because they're not commonly used and available. I've basically limited our list of fonts to the most commonly used core web fonts as well as the "Vera" sans, serif and monoscape typefaces. |
|