Skip to content

Commit 9bc6993

Browse files
Adding DTO's
1 parent 204b778 commit 9bc6993

File tree

2 files changed

+426
-0
lines changed

2 files changed

+426
-0
lines changed

src/Dto/Charts/LinearChartData.php

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
<?php
2+
3+
namespace Solspace\Commons\Dto\Charts;
4+
5+
class LinearChartData implements \JsonSerializable
6+
{
7+
const TYPE_BAR = 'bar';
8+
const TYPE_LINE = 'line';
9+
10+
/** @var string */
11+
private $chartType;
12+
13+
/** @var array */
14+
private $labels;
15+
16+
/** @var array */
17+
private $datasets;
18+
19+
/** @var bool */
20+
private $stacked;
21+
22+
/** @var bool */
23+
private $legends;
24+
25+
/**\
26+
* LinearChartData constructor.
27+
*/
28+
public function __construct()
29+
{
30+
$this->chartType = self::TYPE_LINE;
31+
$this->labels = [];
32+
$this->datasets = [];
33+
$this->stacked = false;
34+
$this->legends = true;
35+
}
36+
37+
/**
38+
* @return string
39+
*/
40+
public function getChartType(): string
41+
{
42+
return $this->chartType;
43+
}
44+
45+
/**
46+
* @param string $chartType
47+
*
48+
* @return LinearChartData
49+
*/
50+
public function setChartType(string $chartType): LinearChartData
51+
{
52+
$this->chartType = $chartType;
53+
54+
return $this;
55+
}
56+
57+
/**
58+
* @return array
59+
*/
60+
public function getLabels(): array
61+
{
62+
return $this->labels;
63+
}
64+
65+
/**
66+
* @param array $labels
67+
*
68+
* @return LinearChartData
69+
*/
70+
public function setLabels(array $labels): LinearChartData
71+
{
72+
$this->labels = $labels;
73+
74+
return $this;
75+
}
76+
77+
/**
78+
* @return array
79+
*/
80+
public function getDatasets(): array
81+
{
82+
return $this->datasets;
83+
}
84+
85+
/**
86+
* @param array $datasets
87+
*
88+
* @return LinearChartData
89+
*/
90+
public function setDatasets(array $datasets): LinearChartData
91+
{
92+
$this->datasets = $datasets;
93+
94+
return $this;
95+
}
96+
97+
/**
98+
* @return bool
99+
*/
100+
public function isStacked(): bool
101+
{
102+
return $this->stacked;
103+
}
104+
105+
/**
106+
* @param bool $stacked
107+
*
108+
* @return LinearChartData
109+
*/
110+
public function setStacked(bool $stacked): LinearChartData
111+
{
112+
$this->stacked = $stacked;
113+
114+
return $this;
115+
}
116+
117+
/**
118+
* @return bool
119+
*/
120+
public function isLegends(): bool
121+
{
122+
return $this->legends;
123+
}
124+
125+
/**
126+
* @param bool $legends
127+
*
128+
* @return LinearChartData
129+
*/
130+
public function setLegends(bool $legends): LinearChartData
131+
{
132+
$this->legends = $legends;
133+
134+
return $this;
135+
}
136+
137+
/**
138+
* @return array
139+
*/
140+
public function jsonSerialize(): array
141+
{
142+
return [
143+
'type' => $this->chartType,
144+
'data' => [
145+
'labels' => $this->labels,
146+
'datasets' => $this->datasets,
147+
],
148+
'options' => [
149+
'tooltips' => [
150+
'backgroundColor' => 'rgba(250, 250, 250, 0.9)',
151+
'titleFontColor' => '#000',
152+
'bodyFontColor' => '#000',
153+
'cornerRadius' => 4,
154+
'xPadding' => 10,
155+
'yPadding' => 7,
156+
'displayColors' => false,
157+
],
158+
'responsive' => true,
159+
'legend' => [
160+
'display' => $this->isLegends(),
161+
'labels' => [
162+
'padding' => 20,
163+
'usePointStyle' => true,
164+
],
165+
],
166+
'scales' => [
167+
'yAxes' => [
168+
[
169+
'stacked' => $this->isStacked(),
170+
'beginAtZero' => true,
171+
'ticks' => [
172+
'maxTicksLimit' => 10,
173+
'min' => 0,
174+
],
175+
],
176+
],
177+
'xAxes' => [
178+
[
179+
'stacked' => $this->isStacked(),
180+
'gridLines' => [
181+
'display' => false,
182+
],
183+
],
184+
],
185+
],
186+
],
187+
];
188+
}
189+
}

0 commit comments

Comments
 (0)