Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
CRAP | |
100.00% |
41 / 41 |
| ChartGenerator | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |
100.00% |
41 / 41 |
| generate | |
100.00% |
1 / 1 |
1 | |
100.00% |
41 / 41 |
|||
| <?php | |
| namespace Alxvng\QATracker\Chart; | |
| use Alxvng\QATracker\DataProvider\Model\AbstractDataSerie; | |
| use Goat1000\SVGGraph\LineGraph; | |
| use Goat1000\SVGGraph\SVGGraph; | |
| class ChartGenerator | |
| { | |
| /** | |
| * @param $values | |
| * @param string $type | |
| * @param array $settings | |
| * | |
| * @return mixed | |
| */ | |
| public static function generate($values, $type = LineGraph::class, array $settings = []) | |
| { | |
| $dark = 'rgb(54,54,54)'; | |
| $darkRed = 'rgb(127,0,0)'; | |
| $font = 'BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif'; | |
| $settings = array_merge([ | |
| 'auto_fit' => true, | |
| 'back_colour' => 'none', | |
| 'pad_left' => 0, | |
| 'pad_right' => 0, | |
| 'pad_top' => 2, | |
| 'pad_bottom' => 2, | |
| 'back_stroke_width' => 0, | |
| 'graph_title_colour' => $dark, | |
| 'graph_title_font' => $font, | |
| 'graph_title_font_size' => 18, | |
| 'axis_font_size' => 12, | |
| 'tooltip_font_size' => 16, | |
| 'axis_colour' => $dark, | |
| 'axis_text_colour' => $dark, | |
| 'axis_text_space_v' => 5, | |
| 'axis_font' => $font, | |
| 'axis_stroke_width' => 1, | |
| 'axis_text_space' => 5, | |
| 'show_axis_v' => false, | |
| 'show_axis_text_v' => false, | |
| 'show_axis_h' => false, | |
| 'show_data_labels' => true, | |
| 'data_label_type' => 'circle', | |
| 'data_label_fade_in_speed' => 40, | |
| 'data_label_fade_out_speed' => 5, | |
| 'data_label_click' => 'hide', | |
| 'data_label_shadow_opacity' => 0, | |
| 'data_label_padding' => 1, | |
| 'marker_colour' => $darkRed, | |
| 'marker_stroke_colour' => $darkRed, | |
| 'line_stroke_width' => 1, | |
| 'stroke_colour' => $dark, | |
| 'datetime_keys' => true, | |
| 'datetime_key_format' => AbstractDataSerie::DATE_FORMAT, | |
| 'datetime_text_format' => 'j M', | |
| 'minimum_grid_spacing_h' => 40, | |
| 'show_grid_subdivisions' => true, | |
| 'thousands' => ' ', | |
| 'precision' => 2, | |
| 'exception_throw' => false, | |
| ], $settings); | |
| $width = 550; | |
| $height = 300; | |
| $graph = new SVGGraph($width, $height, $settings); | |
| $graph->values($values); | |
| return $graph->fetch($type); | |
| } | |
| } |