Completed
Push — master ( 978f4c...209464 )
by Stepan
129:29 queued 124:29
created

ChartService   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 2
eloc 27
dl 0
loc 56
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A calendarChart() 0 19 1
A lineChart() 0 18 1
1
<?php
2
3
namespace Application\Bundle\DefaultBundle\Service;
4
5
use CMEN\GoogleChartsBundle\GoogleCharts\Charts\LineChart;
6
use CMEN\GoogleChartsBundle\GoogleCharts\Charts\CalendarChart;
7
8
/**
9
 * Service for initialization and configuration charts
10
 */
11
class ChartService
12
{
13
14
    /**
15
     * Initialize the calendar chart object
16
     *
17
     * @param array $data
18
     *
19
     * @return CalendarChart
20
     */
21
    public function calendarChart($data)
22
    {
23
        $chart = new CalendarChart();
24
        $chart->getData()->setArrayToDataTable($data);
25
26
        // рахуєм різницю в роках між першою датою графіка і останньою, щоб динамічно підлаштувати висоту канви
27
        $firstDate = array_keys($data)[1]; // в 0-му елементі заголовки графіка. перша дата в 1-му
28
        $lastDate = array_keys($data)[count($data) - 1];
29
30
        $firstYear = (int) (new \DateTime($firstDate))->format('Y');
31
        $lastYear = (int) (new \DateTime($lastDate))->format('Y');
32
        $years = $lastYear - $firstYear + 1;
33
        $chart->getOptions()->setHeight(200 * $years);
34
35
        $chart->getOptions()->getCalendar()->setCellSize(18);
36
        $chart->getOptions()->getNoDataPattern()->setBackgroundColor('#76a7fa');
37
        $chart->getOptions()->getNoDataPattern()->setColor('#a0c3ff');
38
39
        return $chart;
40
    }
41
42
    /**
43
     * Initialize the line chart object
44
     *
45
     * @param array $data
46
     *
47
     * @return LineChart
48
     */
49
    public function lineChart($data)
50
    {
51
        $chart = new LineChart();
52
        $chart->getData()->setArrayToDataTable($data);
53
54
        $chart->getOptions()->setTitle('Продажа билетов за прошедший месяц');
55
        $chart->getOptions()->setHeight(600);
56
        $chart->getOptions()->setWidth(800);
57
        $chart->getOptions()->getTitleTextStyle()->setBold(true);
58
        $chart->getOptions()->getTitleTextStyle()->setColor('#009900');
59
        $chart->getOptions()->getTitleTextStyle()->setItalic(true);
60
        $chart->getOptions()->getTitleTextStyle()->setFontName('Arial');
61
        $chart->getOptions()->getTitleTextStyle()->setFontSize(20);
62
        $chart->getOptions()->getHAxis()->getTextStyle()->setFontSize(12);
63
        $chart->getOptions()->getVAxis()->getTextStyle()->setFontSize(12);
64
        $chart->getOptions()->setCurveType('function');
65
66
        return $chart;
67
    }
68
}
69