PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 1.5.3
Visualizer – Tables & Charts Manager with Built-in AI Generator v1.5.3
4.0.8 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.10.0 3.10.1 3.10.10 3.10.11 3.10.12 3.10.13 3.10.14 3.10.15 3.10.2 3.10.3 All 149 releases
← All changes | classes/Visualizer/Render/Sidebar/Graph.php +473 -471 3.0.91.5.3 View file →
@@ -1,471 +1,473 @@
1 -<?php
2 -
3 -// +----------------------------------------------------------------------+
4 -// | Copyright 2013 Madpixels (email : visualizer@madpixels.net) |
5 -// +----------------------------------------------------------------------+
6 -// | This program is free software; you can redistribute it and/or modify |
7 -// | it under the terms of the GNU General Public License, version 2, as |
8 -// | published by the Free Software Foundation. |
9 -// | |
10 -// | This program is distributed in the hope that it will be useful, |
11 -// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 -// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 -// | GNU General Public License for more details. |
14 -// | |
15 -// | You should have received a copy of the GNU General Public License |
16 -// | along with this program; if not, write to the Free Software |
17 -// | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, |
18 -// | MA 02110-1301 USA |
19 -// +----------------------------------------------------------------------+
20 -// | Author: Eugene Manuilov <eugene@manuilov.org> |
21 -// +----------------------------------------------------------------------+
22 -/**
23 - * Base class for sidebar settigns of graph based charts.
24 - *
25 - * @category Visualizer
26 - * @package Render
27 - * @subpackage Sidebar
28 - *
29 - * @since 1.0.0
30 - * @abstract
31 - */
32 -abstract class Visualizer_Render_Sidebar_Graph extends Visualizer_Render_Sidebar {
33 -
34 - /**
35 - * Determines whether we need to render vertical gridlines options or not.
36 - *
37 - * @since 1.0.0
38 - *
39 - * @access protected
40 - * @var boolean
41 - */
42 - protected $_verticalGridLines;
43 -
44 - /**
45 - * Determines whether we need to render horizontal gridlines options or not.
46 - *
47 - * @since 1.0.0
48 - *
49 - * @access protected
50 - * @var boolean
51 - */
52 - protected $_horizontalGridLines;
53 -
54 - /**
55 - * The array of available axis positions.
56 - *
57 - * @since 1.0.0
58 - *
59 - * @access protected
60 - * @var array
61 - */
62 - protected $_positions;
63 -
64 - /**
65 - * Constructor.
66 - *
67 - * @since 1.0.0
68 - *
69 - * @access public
70 - * @param array $data The data what has to be associated with this render.
71 - */
72 - public function __construct( $data = array() ) {
73 - parent::__construct( $data );
74 -
75 - $this->_verticalGridLines = true;
76 - $this->_horizontalGridLines = true;
77 -
78 - $this->_positions = array(
79 - '' => '',
80 - 'in' => esc_html__( 'Inside the chart', 'visualizer' ),
81 - 'out' => esc_html__( 'Outside the chart', 'visualizer' ),
82 - 'none' => esc_html__( 'None', 'visualizer' ),
83 - );
84 - }
85 -
86 - /**
87 - * Renders chart title settings.
88 - *
89 - * @since 1.0.0
90 - *
91 - * @access protected
92 - */
93 - protected function _renderChartTitleSettings() {
94 - self::_renderTextItem(
95 - esc_html__( 'Chart Title', 'visualizer' ),
96 - 'title',
97 - $this->title,
98 - esc_html__( 'Text to display above the chart.', 'visualizer' )
99 - );
100 -
101 - self::_renderSelectItem(
102 - esc_html__( 'Chart Title Position', 'visualizer' ),
103 - 'titlePosition',
104 - $this->titlePosition,
105 - $this->_positions,
106 - esc_html__( 'Where to place the chart title, compared to the chart area.', 'visualizer' )
107 - );
108 -
109 - self::_renderColorPickerItem(
110 - esc_html__( 'Chart Title Color', 'visualizer' ),
111 - 'titleTextStyle[color]',
112 - isset( $this->titleTextStyle['color'] ) ? $this->titleTextStyle['color'] : null,
113 - '#000'
114 - );
115 -
116 - echo '<div class="viz-section-delimiter"></div>';
117 -
118 - self::_renderSelectItem(
119 - esc_html__( 'Axes Titles Position', 'visualizer' ),
120 - 'axisTitlesPosition',
121 - $this->axisTitlesPosition,
122 - $this->_positions,
123 - esc_html__( 'Determines where to place the axis titles, compared to the chart area.', 'visualizer' )
124 - );
125 - }
126 -
127 - /**
128 - * Renders general settings block for horizontal axis settings.
129 - *
130 - * @since 1.4.0
131 - *
132 - * @access protected
133 - */
134 - protected function _renderHorizontalAxisGeneralSettings() {
135 - self::_renderTextItem(
136 - esc_html__( 'Axis Title', 'visualizer' ),
137 - 'hAxis[title]',
138 - isset( $this->hAxis['title'] ) ? $this->hAxis['title'] : '',
139 - esc_html__( 'The title of the horizontal axis.', 'visualizer' )
140 - );
141 -
142 - self::_renderSelectItem(
143 - esc_html__( 'Text Position', 'visualizer' ),
144 - 'vAxis[textPosition]',
145 - isset( $this->vAxis['textPosition'] ) ? $this->vAxis['textPosition'] : '',
146 - $this->_positions,
147 - esc_html__( 'Position of the horizontal axis text, relative to the chart area.', 'visualizer' )
148 - );
149 -
150 - self::_renderSelectItem(
151 - esc_html__( 'Direction', 'visualizer' ),
152 - 'hAxis[direction]',
153 - isset( $this->hAxis['direction'] ) ? $this->hAxis['direction'] : '',
154 - array(
155 - '' => '',
156 - '1' => esc_html__( 'Identical Direction', 'visualizer' ),
157 - '-1' => esc_html__( 'Reverse Direction', 'visualizer' ),
158 - ),
159 - esc_html__( 'The direction in which the values along the horizontal axis grow.', 'visualizer' )
160 - );
161 -
162 - self::_renderColorPickerItem(
163 - esc_html__( 'Base Line Color', 'visualizer' ),
164 - 'vAxis[baselineColor]',
165 - isset( $this->vAxis['baselineColor'] ) ? $this->vAxis['baselineColor'] : null,
166 - '#000'
167 - );
168 - }
169 -
170 - /**
171 - * Renders horizontal axis settings.
172 - *
173 - * @since 1.2.0
174 - *
175 - * @access protected
176 - */
177 - protected function _renderHorizontalAxisSettings() {
178 - self::_renderGroupStart( esc_html__( 'Horizontal Axis Settings', 'visualizer' ) );
179 - self::_renderSectionStart( esc_html__( 'General Settings', 'visualizer' ), false );
180 - $this->_renderHorizontalAxisGeneralSettings();
181 - self::_renderSectionEnd();
182 -
183 - if ( $this->_horizontalGridLines ) {
184 - self::_renderSectionStart( esc_html__( 'Grid Lines', 'visualizer' ), false );
185 - self::_renderTextItem(
186 - esc_html__( 'Count', 'visualizer' ),
187 - 'vAxis[gridlines][count]',
188 - isset( $this->vAxis['gridlines']['count'] ) ? $this->vAxis['gridlines']['count'] : '',
189 - esc_html__( 'The number of horizontal gridlines inside the chart area. Minimum value is 2. Specify -1 to automatically compute the number of gridlines.', 'visualizer' ),
190 - 5
191 - );
192 -
193 - self::_renderColorPickerItem(
194 - esc_html__( 'Color', 'visualizer' ),
195 - 'vAxis[gridlines][color]',
196 - isset( $this->vAxis['gridlines']['color'] ) ? $this->vAxis['gridlines']['color'] : null,
197 - '#ccc'
198 - );
199 - self::_renderSectionEnd();
200 -
201 - self::_renderSectionStart( esc_html__( 'Minor Grid Lines', 'visualizer' ), false );
202 - self::_renderTextItem(
203 - esc_html__( 'Count', 'visualizer' ),
204 - 'vAxis[minorGridlines][count]',
205 - isset( $this->vAxis['minorGridlines']['count'] ) ? $this->vAxis['minorGridlines']['count'] : '',
206 - esc_html__( 'The number of horizontal minor gridlines between two regular gridlines.', 'visualizer' ),
207 - 0
208 - );
209 -
210 - self::_renderColorPickerItem(
211 - esc_html__( 'Color', 'visualizer' ),
212 - 'vAxis[minorGridlines][color]',
213 - isset( $this->vAxis['minorGridlines']['color'] ) ? $this->vAxis['minorGridlines']['color'] : null,
214 - null
215 - );
216 - self::_renderSectionEnd();
217 - }
218 -
219 - if ( $this->_verticalGridLines ) {
220 - self::_renderSectionStart( esc_html__( 'View Window', 'visualizer' ), false );
221 - self::_renderTextItem(
222 - esc_html__( 'Maximum Value', 'visualizer' ),
223 - 'hAxis[viewWindow][max]',
224 - isset( $this->hAxis['viewWindow']['max'] ) ? $this->hAxis['viewWindow']['max'] : '',
225 - 'The maximum vertical data value to render.'
226 - );
227 -
228 - self::_renderTextItem(
229 - esc_html__( 'Minimum Value', 'visualizer' ),
230 - 'hAxis[viewWindow][min]',
231 - isset( $this->hAxis['viewWindow']['min'] ) ? $this->hAxis['viewWindow']['min'] : '',
232 - 'The minimum vertical data value to render.'
233 - );
234 - self::_renderSectionEnd();
235 - }
236 - self::_renderGroupEnd();
237 - }
238 -
239 - /**
240 - * Renders general settings block for vertical axis settings.
241 - *
242 - * @since 1.4.0
243 - *
244 - * @access protected
245 - */
246 - protected function _renderVerticalAxisGeneralSettings() {
247 - self::_renderTextItem(
248 - esc_html__( 'Axis Title', 'visualizer' ),
249 - 'vAxis[title]',
250 - isset( $this->vAxis['title'] ) ? $this->vAxis['title'] : '',
251 - esc_html__( 'The title of the vertical axis.', 'visualizer' )
252 - );
253 -
254 - self::_renderSelectItem(
255 - esc_html__( 'Text Position', 'visualizer' ),
256 - 'hAxis[textPosition]',
257 - isset( $this->hAxis['textPosition'] ) ? $this->hAxis['textPosition'] : '',
258 - $this->_positions,
259 - esc_html__( 'Position of the vertical axis text, relative to the chart area.', 'visualizer' )
260 - );
261 -
262 - self::_renderSelectItem(
263 - esc_html__( 'Direction', 'visualizer' ),
264 - 'vAxis[direction]',
265 - isset( $this->vAxis['direction'] ) ? $this->vAxis['direction'] : '',
266 - array(
267 - '' => '',
268 - '1' => esc_html__( 'Identical Direction', 'visualizer' ),
269 - '-1' => esc_html__( 'Reverse Direction', 'visualizer' ),
270 - ),
271 - esc_html__( 'The direction in which the values along the vertical axis grow.', 'visualizer' )
272 - );
273 -
274 - self::_renderColorPickerItem(
275 - esc_html__( 'Base Line Color', 'visualizer' ),
276 - 'hAxis[baselineColor]',
277 - isset( $this->hAxis['baselineColor'] ) ? $this->hAxis['baselineColor'] : null,
278 - '#000'
279 - );
280 - }
281 -
282 - /**
283 - * Renders vertical axis settings.
284 - *
285 - * @since 1.2.0
286 - *
287 - * @access protected
288 - */
289 - protected function _renderVerticalAxisSettings() {
290 - self::_renderGroupStart( esc_html__( 'Vertical Axis Settings', 'visualizer' ) );
291 - self::_renderSectionStart( esc_html__( 'General Settings', 'visualizer' ), false );
292 - $this->_renderVerticalAxisGeneralSettings();
293 - self::_renderSectionEnd();
294 -
295 - if ( $this->_verticalGridLines ) {
296 - self::_renderSectionStart( esc_html__( 'Grid Lines', 'visualizer' ), false );
297 - self::_renderTextItem(
298 - esc_html__( 'Count', 'visualizer' ),
299 - 'hAxis[gridlines][count]',
300 - isset( $this->hAxis['gridlines']['count'] ) ? $this->hAxis['gridlines']['count'] : '',
301 - esc_html__( 'The number of vertical gridlines inside the chart area. Minimum value is 2. Specify -1 to automatically compute the number of gridlines.', 'visualizer' ),
302 - 5
303 - );
304 -
305 - self::_renderColorPickerItem(
306 - esc_html__( 'Color', 'visualizer' ),
307 - 'hAxis[gridlines][color]',
308 - isset( $this->hAxis['gridlines']['color'] ) ? $this->hAxis['gridlines']['color'] : null,
309 - '#ccc'
310 - );
311 - self::_renderSectionEnd();
312 -
313 - self::_renderSectionStart( esc_html__( 'Minor Grid Lines', 'visualizer' ), false );
314 - self::_renderTextItem(
315 - esc_html__( 'Count', 'visualizer' ),
316 - 'hAxis[minorGridlines][count]',
317 - isset( $this->hAxis['minorGridlines']['count'] ) ? $this->hAxis['minorGridlines']['count'] : '',
318 - esc_html__( 'The number of vertical minor gridlines between two regular gridlines.', 'visualizer' ),
319 - 0
320 - );
321 -
322 - self::_renderColorPickerItem(
323 - esc_html__( 'Color', 'visualizer' ),
324 - 'hAxis[minorGridlines][color]',
325 - isset( $this->hAxis['minorGridlines']['color'] ) ? $this->hAxis['minorGridlines']['color'] : null,
326 - null
327 - );
328 - self::_renderSectionEnd();
329 - }
330 -
331 - if ( $this->_horizontalGridLines ) {
332 - self::_renderSectionStart( esc_html__( 'View Window', 'visualizer' ), false );
333 - self::_renderTextItem(
334 - esc_html__( 'Maximum Value', 'visualizer' ),
335 - 'vAxis[viewWindow][max]',
336 - isset( $this->vAxis['viewWindow']['max'] ) ? $this->vAxis['viewWindow']['max'] : '',
337 - 'The maximum vertical data value to render.'
338 - );
339 -
340 - self::_renderTextItem(
341 - esc_html__( 'Minimum Value', 'visualizer' ),
342 - 'vAxis[viewWindow][min]',
343 - isset( $this->vAxis['viewWindow']['min'] ) ? $this->vAxis['viewWindow']['min'] : '',
344 - 'The minimum vertical data value to render.'
345 - );
346 - self::_renderSectionEnd();
347 - }
348 - self::_renderGroupEnd();
349 - }
350 -
351 - /**
352 - * Renders chart axes settings.
353 - *
354 - * @since 1.0.0
355 - *
356 - * @access protected
357 - */
358 - protected function _renderAxesSettings() {
359 - $this->_renderHorizontalAxisSettings();
360 - $this->_renderVerticalAxisSettings();
361 - }
362 -
363 - /**
364 - * Renders series settings group.
365 - *
366 - * @since 1.0.0
367 - *
368 - * @access protected
369 - */
370 - protected function _renderSeriesSettings() {
371 - self::_renderGroupStart( esc_html__( 'Series Settings', 'visualizer' ) );
372 - for ( $i = 1, $cnt = count( $this->__series ); $i < $cnt; $i++ ) {
373 - if ( ! empty( $this->__series[ $i ]['label'] ) ) {
374 - self::_renderSectionStart( esc_html( $this->__series[ $i ]['label'] ), false );
375 - $this->_renderSeries( $i - 1 );
376 - self::_renderSectionEnd();
377 - }
378 - }
379 - self::_renderGroupEnd();
380 - }
381 -
382 - /**
383 - * Renders concreate series settings.
384 - *
385 - * @since 1.0.0
386 - *
387 - * @access protected
388 - * @param int $index The series index.
389 - */
390 - protected function _renderSeries( $index ) {
391 - self::_renderSelectItem(
392 - esc_html__( 'Visible In Legend', 'visualizer' ),
393 - 'series[' . $index . '][visibleInLegend]',
394 - isset( $this->series[ $index ]['visibleInLegend'] ) ? $this->series[ $index ]['visibleInLegend'] : '',
395 - array(
396 - '' => '',
397 - '0' => esc_html__( 'No', 'visualizer' ),
398 - '1' => esc_html__( 'Yes', 'visualizer' ),
399 - ),
400 - esc_html__( 'Determines whether the series has to be presented in the legend or not.', 'visualizer' )
401 - );
402 -
403 - $this->_renderFormatField( $index );
404 -
405 - self::_renderColorPickerItem(
406 - esc_html__( 'Color', 'visualizer' ),
407 - 'series[' . $index . '][color]',
408 - isset( $this->series[ $index ]['color'] ) ? $this->series[ $index ]['color'] : null,
409 - null
410 - );
411 - }
412 -
413 - /**
414 - * Renders format field for horizontal axis.
415 - *
416 - * @since 1.4.3
417 - *
418 - * @access protected
419 - */
420 - protected function _renderHorizontalAxisFormatField() {
421 - self::_renderTextItem(
422 - esc_html__( 'Number Format', 'visualizer' ),
423 - 'hAxis[format]',
424 - isset( $this->hAxis['format'] ) ? $this->hAxis['format'] : '',
425 - sprintf(
426 - '%s<br><br>%s<br><br>%s',
427 - esc_html__( 'Enter custom format pattern to apply to horizontal axis labels.', 'visualizer' ),
428 - sprintf(
429 - esc_html__( 'For number axis labels, this is a subset of the decimal formatting %1$sICU pattern set%2$s. For instance, $#,###.## will display values $1,234.56 for value 1234.56. Pay attention that if you use #&#37;&#37; percentage format then your values will be multiplied by 100.', 'visualizer' ),
430 - '<a href="http://icu-project.org/apiref/icu4c/classDecimalFormat.html#_details" target="_blank">',
431 - '</a>'
432 - ),
433 - sprintf(
434 - esc_html__( 'For date axis labels, this is a subset of the date formatting %1$sICU date and time format%2$s.', 'visualizer' ),
435 - '<a href="http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax" target="_blank">',
436 - '</a>'
437 - )
438 - )
439 - );
440 - }
441 -
442 - /**
443 - * Renders format field for vertical axis settings.
444 - *
445 - * @since 1.4.3
446 - *
447 - * @access protected
448 - */
449 - protected function _renderVerticalAxisFormatField() {
450 - self::_renderTextItem(
451 - esc_html__( 'Number Format', 'visualizer' ),
452 - 'vAxis[format]',
453 - isset( $this->vAxis['format'] ) ? $this->vAxis['format'] : '',
454 - sprintf(
455 - '%s<br><br>%s<br><br>%s',
456 - esc_html__( 'Enter custom format pattern to apply to vertical axis labels.', 'visualizer' ),
457 - sprintf(
458 - esc_html__( 'For number axis labels, this is a subset of the decimal formatting %1$sICU pattern set%2$s. For instance, $#,###.## will display values $1,234.56 for value 1234.56. Pay attention that if you use #&#37;&#37; percentage format then your values will be multiplied by 100.', 'visualizer' ),
459 - '<a href="http://icu-project.org/apiref/icu4c/classDecimalFormat.html#_details" target="_blank">',
460 - '</a>'
461 - ),
462 - sprintf(
463 - esc_html__( 'For date axis labels, this is a subset of the date formatting %1$sICU date and time format%2$s.', 'visualizer' ),
464 - '<a href="http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax" target="_blank">',
465 - '</a>'
466 - )
467 - )
468 - );
469 - }
470 -
471 -}
1 +<?php
2 +
3 +// +----------------------------------------------------------------------+
4 +// | Copyright 2013 Madpixels (email : visualizer@madpixels.net) |
5 +// +----------------------------------------------------------------------+
6 +// | This program is free software; you can redistribute it and/or modify |
7 +// | it under the terms of the GNU General Public License, version 2, as |
8 +// | published by the Free Software Foundation. |
9 +// | |
10 +// | This program is distributed in the hope that it will be useful, |
11 +// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 +// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 +// | GNU General Public License for more details. |
14 +// | |
15 +// | You should have received a copy of the GNU General Public License |
16 +// | along with this program; if not, write to the Free Software |
17 +// | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, |
18 +// | MA 02110-1301 USA |
19 +// +----------------------------------------------------------------------+
20 +// | Author: Eugene Manuilov <eugene@manuilov.org> |
21 +// +----------------------------------------------------------------------+
22 +
23 +
24 +/**
25 + * Base class for sidebar settigns of graph based charts.
26 + *
27 + * @category Visualizer
28 + * @package Render
29 + * @subpackage Sidebar
30 + *
31 + * @since 1.0.0
32 + * @abstract
33 + */
34 +abstract class Visualizer_Render_Sidebar_Graph extends Visualizer_Render_Sidebar {
35 +
36 + /**
37 + * Determines whether we need to render vertical gridlines options or not.
38 + *
39 + * @since 1.0.0
40 + *
41 + * @access protected
42 + * @var boolean
43 + */
44 + protected $_verticalGridLines;
45 +
46 + /**
47 + * Determines whether we need to render horizontal gridlines options or not.
48 + *
49 + * @since 1.0.0
50 + *
51 + * @access protected
52 + * @var boolean
53 + */
54 + protected $_horizontalGridLines;
55 +
56 + /**
57 + * The array of available axis positions.
58 + *
59 + * @since 1.0.0
60 + *
61 + * @access protected
62 + * @var array
63 + */
64 + protected $_positions;
65 +
66 + /**
67 + * Constructor.
68 + *
69 + * @since 1.0.0
70 + *
71 + * @access public
72 + * @param array $data The data what has to be associated with this render.
73 + */
74 + public function __construct( $data = array() ) {
75 + parent::__construct( $data );
76 +
77 + $this->_verticalGridLines = true;
78 + $this->_horizontalGridLines = true;
79 +
80 + $this->_positions = array(
81 + '' => '',
82 + 'in' => esc_html__( 'Inside the chart', Visualizer_Plugin::NAME ),
83 + 'out' => esc_html__( 'Outside the chart', Visualizer_Plugin::NAME ),
84 + 'none' => esc_html__( 'None', Visualizer_Plugin::NAME ),
85 + );
86 + }
87 +
88 + /**
89 + * Renders chart title settings.
90 + *
91 + * @since 1.0.0
92 + *
93 + * @access protected
94 + */
95 + protected function _renderChartTitleSettings() {
96 + self::_renderTextItem(
97 + esc_html__( 'Chart Title', Visualizer_Plugin::NAME ),
98 + 'title',
99 + $this->title,
100 + esc_html__( 'Text to display above the chart.', Visualizer_Plugin::NAME )
101 + );
102 +
103 + self::_renderSelectItem(
104 + esc_html__( 'Chart Title Position', Visualizer_Plugin::NAME ),
105 + 'titlePosition',
106 + $this->titlePosition,
107 + $this->_positions,
108 + esc_html__( 'Where to place the chart title, compared to the chart area.', Visualizer_Plugin::NAME )
109 + );
110 +
111 + self::_renderColorPickerItem(
112 + esc_html__( 'Chart Title Color', Visualizer_Plugin::NAME ),
113 + 'titleTextStyle[color]',
114 + isset( $this->titleTextStyle['color'] ) ? $this->titleTextStyle['color'] : null,
115 + '#000'
116 + );
117 +
118 + echo '<div class="section-delimiter"></div>';
119 +
120 + self::_renderSelectItem(
121 + esc_html__( 'Axes Titles Position', Visualizer_Plugin::NAME ),
122 + 'axisTitlesPosition',
123 + $this->axisTitlesPosition,
124 + $this->_positions,
125 + esc_html__( 'Determines where to place the axis titles, compared to the chart area.', Visualizer_Plugin::NAME )
126 + );
127 + }
128 +
129 + /**
130 + * Renders general settings block for horizontal axis settings.
131 + *
132 + * @since 1.4.0
133 + *
134 + * @access protected
135 + */
136 + protected function _renderHorizontalAxisGeneratSettings() {
137 + self::_renderTextItem(
138 + esc_html__( 'Axis Title', Visualizer_Plugin::NAME ),
139 + 'hAxis[title]',
140 + isset( $this->hAxis['title'] ) ? $this->hAxis['title'] : '',
141 + esc_html__( 'The title of the horizontal axis.', Visualizer_Plugin::NAME )
142 + );
143 +
144 + self::_renderSelectItem(
145 + esc_html__( 'Text Position', Visualizer_Plugin::NAME ),
146 + 'vAxis[textPosition]',
147 + isset( $this->vAxis['textPosition'] ) ? $this->vAxis['textPosition'] : '',
148 + $this->_positions,
149 + esc_html__( 'Position of the horizontal axis text, relative to the chart area.', Visualizer_Plugin::NAME )
150 + );
151 +
152 + self::_renderSelectItem(
153 + esc_html__( 'Direction', Visualizer_Plugin::NAME ),
154 + 'hAxis[direction]',
155 + isset( $this->hAxis['direction'] ) ? $this->hAxis['direction'] : '',
156 + array(
157 + '' => '',
158 + '1' => esc_html__( 'Identical Direction', Visualizer_Plugin::NAME ),
159 + '-1' => esc_html__( 'Reverse Direction', Visualizer_Plugin::NAME ),
160 + ),
161 + esc_html__( 'The direction in which the values along the horizontal axis grow.', Visualizer_Plugin::NAME )
162 + );
163 +
164 + self::_renderColorPickerItem(
165 + esc_html__( 'Base Line Color', Visualizer_Plugin::NAME ),
166 + 'vAxis[baselineColor]',
167 + isset( $this->vAxis['baselineColor'] ) ? $this->vAxis['baselineColor'] : null,
168 + '#000'
169 + );
170 + }
171 +
172 + /**
173 + * Renders horizontal axis settings.
174 + *
175 + * @since 1.2.0
176 + *
177 + * @access protected
178 + */
179 + protected function _renderHorizontalAxisSettings() {
180 + self::_renderGroupStart( esc_html__( 'Horizontal Axis Settings', Visualizer_Plugin::NAME ) );
181 + self::_renderSectionStart( esc_html__( 'General Settings', Visualizer_Plugin::NAME ), false );
182 + $this->_renderHorizontalAxisGeneratSettings();
183 + self::_renderSectionEnd();
184 +
185 + if ( $this->_horizontalGridLines ) {
186 + self::_renderSectionStart( esc_html__( 'Grid Lines', Visualizer_Plugin::NAME ), false );
187 + self::_renderTextItem(
188 + esc_html__( 'Count', Visualizer_Plugin::NAME ),
189 + 'vAxis[gridlines][count]',
190 + isset( $this->vAxis['gridlines']['count'] ) ? $this->vAxis['gridlines']['count'] : '',
191 + esc_html__( 'The number of horizontal gridlines inside the chart area. Minimum value is 2. Specify -1 to automatically compute the number of gridlines.', Visualizer_Plugin::NAME ),
192 + 5
193 + );
194 +
195 + self::_renderColorPickerItem(
196 + esc_html__( 'Color', Visualizer_Plugin::NAME ),
197 + 'vAxis[gridlines][color]',
198 + isset( $this->vAxis['gridlines']['color'] ) ? $this->vAxis['gridlines']['color'] : null,
199 + '#ccc'
200 + );
201 + self::_renderSectionEnd();
202 +
203 + self::_renderSectionStart( esc_html__( 'Minor Grid Lines', Visualizer_Plugin::NAME ), false );
204 + self::_renderTextItem(
205 + esc_html__( 'Count', Visualizer_Plugin::NAME ),
206 + 'vAxis[minorGridlines][count]',
207 + isset( $this->vAxis['minorGridlines']['count'] ) ? $this->vAxis['minorGridlines']['count'] : '',
208 + esc_html__( 'The number of horizontal minor gridlines between two regular gridlines.', Visualizer_Plugin::NAME ),
209 + 0
210 + );
211 +
212 + self::_renderColorPickerItem(
213 + esc_html__( 'Color', Visualizer_Plugin::NAME ),
214 + 'vAxis[minorGridlines][color]',
215 + isset( $this->vAxis['minorGridlines']['color'] ) ? $this->vAxis['minorGridlines']['color'] : null,
216 + null
217 + );
218 + self::_renderSectionEnd();
219 + }
220 +
221 + if ( $this->_verticalGridLines ) {
222 + self::_renderSectionStart( esc_html__( 'View Window', Visualizer_Plugin::NAME ), false );
223 + self::_renderTextItem(
224 + esc_html__( 'Maximum Value', Visualizer_Plugin::NAME ),
225 + 'hAxis[viewWindow][max]',
226 + isset( $this->hAxis['viewWindow']['max'] ) ? $this->hAxis['viewWindow']['max'] : '',
227 + 'The maximum vertical data value to render.'
228 + );
229 +
230 + self::_renderTextItem(
231 + esc_html__( 'Minimum Value', Visualizer_Plugin::NAME ),
232 + 'hAxis[viewWindow][min]',
233 + isset( $this->hAxis['viewWindow']['min'] ) ? $this->hAxis['viewWindow']['min'] : '',
234 + 'The minimum vertical data value to render.'
235 + );
236 + self::_renderSectionEnd();
237 + }
238 + self::_renderGroupEnd();
239 + }
240 +
241 + /**
242 + * Renders general settings block for vertical axis settings.
243 + *
244 + * @since 1.4.0
245 + *
246 + * @access protected
247 + */
248 + protected function _renderVerticalAxisGeneralSettings() {
249 + self::_renderTextItem(
250 + esc_html__( 'Axis Title', Visualizer_Plugin::NAME ),
251 + 'vAxis[title]',
252 + isset( $this->vAxis['title'] ) ? $this->vAxis['title'] : '',
253 + esc_html__( 'The title of the vertical axis.', Visualizer_Plugin::NAME )
254 + );
255 +
256 + self::_renderSelectItem(
257 + esc_html__( 'Text Position', Visualizer_Plugin::NAME ),
258 + 'hAxis[textPosition]',
259 + isset( $this->hAxis['textPosition'] ) ? $this->hAxis['textPosition'] : '',
260 + $this->_positions,
261 + esc_html__( 'Position of the vertical axis text, relative to the chart area.', Visualizer_Plugin::NAME )
262 + );
263 +
264 + self::_renderSelectItem(
265 + esc_html__( 'Direction', Visualizer_Plugin::NAME ),
266 + 'vAxis[direction]',
267 + isset( $this->vAxis['direction'] ) ? $this->vAxis['direction'] : '',
268 + array(
269 + '' => '',
270 + '1' => esc_html__( 'Identical Direction', Visualizer_Plugin::NAME ),
271 + '-1' => esc_html__( 'Reverse Direction', Visualizer_Plugin::NAME ),
272 + ),
273 + esc_html__( 'The direction in which the values along the vertical axis grow.', Visualizer_Plugin::NAME )
274 + );
275 +
276 + self::_renderColorPickerItem(
277 + esc_html__( 'Base Line Color', Visualizer_Plugin::NAME ),
278 + 'hAxis[baselineColor]',
279 + isset( $this->hAxis['baselineColor'] ) ? $this->hAxis['baselineColor'] : null,
280 + '#000'
281 + );
282 + }
283 +
284 + /**
285 + * Renders vertical axis settings.
286 + *
287 + * @since 1.2.0
288 + *
289 + * @access protected
290 + */
291 + protected function _renderVerticalAxisSettings() {
292 + self::_renderGroupStart( esc_html__( 'Vertical Axis Settings', Visualizer_Plugin::NAME ) );
293 + self::_renderSectionStart( esc_html__( 'General Settings', Visualizer_Plugin::NAME ), false );
294 + $this->_renderVerticalAxisGeneralSettings();
295 + self::_renderSectionEnd();
296 +
297 + if ( $this->_verticalGridLines ) {
298 + self::_renderSectionStart( esc_html__( 'Grid Lines', Visualizer_Plugin::NAME ), false );
299 + self::_renderTextItem(
300 + esc_html__( 'Count', Visualizer_Plugin::NAME ),
301 + 'hAxis[gridlines][count]',
302 + isset( $this->hAxis['gridlines']['count'] ) ? $this->hAxis['gridlines']['count'] : '',
303 + esc_html__( 'The number of vertical gridlines inside the chart area. Minimum value is 2. Specify -1 to automatically compute the number of gridlines.', Visualizer_Plugin::NAME ),
304 + 5
305 + );
306 +
307 + self::_renderColorPickerItem(
308 + esc_html__( 'Color', Visualizer_Plugin::NAME ),
309 + 'hAxis[gridlines][color]',
310 + isset( $this->hAxis['gridlines']['color'] ) ? $this->hAxis['gridlines']['color'] : null,
311 + '#ccc'
312 + );
313 + self::_renderSectionEnd();
314 +
315 + self::_renderSectionStart( esc_html__( 'Minor Grid Lines', Visualizer_Plugin::NAME ), false );
316 + self::_renderTextItem(
317 + esc_html__( 'Count', Visualizer_Plugin::NAME ),
318 + 'hAxis[minorGridlines][count]',
319 + isset( $this->hAxis['minorGridlines']['count'] ) ? $this->hAxis['minorGridlines']['count'] : '',
320 + esc_html__( 'The number of vertical minor gridlines between two regular gridlines.', Visualizer_Plugin::NAME ),
321 + 0
322 + );
323 +
324 + self::_renderColorPickerItem(
325 + esc_html__( 'Color', Visualizer_Plugin::NAME ),
326 + 'hAxis[minorGridlines][color]',
327 + isset( $this->hAxis['minorGridlines']['color'] ) ? $this->hAxis['minorGridlines']['color'] : null,
328 + null
329 + );
330 + self::_renderSectionEnd();
331 + }
332 +
333 + if ( $this->_horizontalGridLines ) {
334 + self::_renderSectionStart( esc_html__( 'View Window', Visualizer_Plugin::NAME ), false );
335 + self::_renderTextItem(
336 + esc_html__( 'Maximum Value', Visualizer_Plugin::NAME ),
337 + 'vAxis[viewWindow][max]',
338 + isset( $this->vAxis['viewWindow']['max'] ) ? $this->vAxis['viewWindow']['max'] : '',
339 + 'The maximum vertical data value to render.'
340 + );
341 +
342 + self::_renderTextItem(
343 + esc_html__( 'Minimum Value', Visualizer_Plugin::NAME ),
344 + 'vAxis[viewWindow][min]',
345 + isset( $this->vAxis['viewWindow']['min'] ) ? $this->vAxis['viewWindow']['min'] : '',
346 + 'The minimum vertical data value to render.'
347 + );
348 + self::_renderSectionEnd();
349 + }
350 + self::_renderGroupEnd();
351 + }
352 +
353 + /**
354 + * Renders chart axes settings.
355 + *
356 + * @since 1.0.0
357 + *
358 + * @access protected
359 + */
360 + protected function _renderAxesSettings() {
361 + $this->_renderHorizontalAxisSettings();
362 + $this->_renderVerticalAxisSettings();
363 + }
364 +
365 + /**
366 + * Renders series settings group.
367 + *
368 + * @since 1.0.0
369 + *
370 + * @access protected
371 + */
372 + protected function _renderSeriesSettings() {
373 + self::_renderGroupStart( esc_html__( 'Series Settings', Visualizer_Plugin::NAME ) );
374 + for ( $i = 1, $cnt = count( $this->__series ); $i < $cnt; $i++ ) {
375 + if ( !empty( $this->__series[$i]['label'] ) ) {
376 + self::_renderSectionStart( esc_html( $this->__series[$i]['label'] ), false );
377 + $this->_renderSeries( $i - 1 );
378 + self::_renderSectionEnd();
379 + }
380 + }
381 + self::_renderGroupEnd();
382 + }
383 +
384 + /**
385 + * Renders concreate series settings.
386 + *
387 + * @since 1.0.0
388 + *
389 + * @access protected
390 + * @param int $index The series index.
391 + */
392 + protected function _renderSeries( $index ) {
393 + self::_renderSelectItem(
394 + esc_html__( 'Visible In Legend', Visualizer_Plugin::NAME ),
395 + 'series[' . $index . '][visibleInLegend]',
396 + isset( $this->series[$index]['visibleInLegend'] ) ? $this->series[$index]['visibleInLegend'] : '',
397 + array(
398 + '' => '',
399 + '0' => esc_html__( 'No', Visualizer_Plugin::NAME ),
400 + '1' => esc_html__( 'Yes', Visualizer_Plugin::NAME ),
401 + ),
402 + esc_html__( 'Determines whether the series has to be presented in the legend or not.', Visualizer_Plugin::NAME )
403 + );
404 +
405 + $this->_renderFormatField( $index );
406 +
407 + self::_renderColorPickerItem(
408 + esc_html__( 'Color', Visualizer_Plugin::NAME ),
409 + 'series[' . $index . '][color]',
410 + isset( $this->series[$index]['color'] ) ? $this->series[$index]['color'] : null,
411 + null
412 + );
413 + }
414 +
415 + /**
416 + * Renders format field for horizontal axis.
417 + *
418 + * @since 1.4.3
419 + *
420 + * @access protected
421 + */
422 + protected function _renderHorizontalAxisFormatField() {
423 + self::_renderTextItem(
424 + esc_html__( 'Number Format', Visualizer_Plugin::NAME ),
425 + 'hAxis[format]',
426 + isset( $this->hAxis['format'] ) ? $this->hAxis['format'] : '',
427 + sprintf(
428 + '%s<br><br>%s<br><br>%s',
429 + esc_html__( 'Enter custom format pattern to apply to horizontal axis labels.', Visualizer_Plugin::NAME ),
430 + sprintf(
431 + esc_html__( 'For number axis labels, this is a subset of the decimal formatting %sICU pattern set%s. For instance, $#,###.## will display values $1,234.56 for value 1234.56. Pay attention that if you use #%% percentage format then your values will be multiplied by 100.', Visualizer_Plugin::NAME ),
432 + '<a href="http://icu-project.org/apiref/icu4c/classDecimalFormat.html#_details" target="_blank">',
433 + '</a>'
434 + ),
435 + sprintf(
436 + esc_html__( 'For date axis labels, this is a subset of the date formatting %sICU date and time format%s.', Visualizer_Plugin::NAME ),
437 + '<a href="http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax" target="_blank">',
438 + '</a>'
439 + )
440 + )
441 + );
442 + }
443 +
444 + /**
445 + * Renders format field for vertical axis settings.
446 + *
447 + * @since 1.4.3
448 + *
449 + * @access protected
450 + */
451 + protected function _renderVerticalAxisFormatField() {
452 + self::_renderTextItem(
453 + esc_html__( 'Number Format', Visualizer_Plugin::NAME ),
454 + 'vAxis[format]',
455 + isset( $this->vAxis['format'] ) ? $this->vAxis['format'] : '',
456 + sprintf(
457 + '%s<br><br>%s<br><br>%s',
458 + esc_html__( 'Enter custom format pattern to apply to vertical axis labels.', Visualizer_Plugin::NAME ),
459 + sprintf(
460 + esc_html__( 'For number axis labels, this is a subset of the decimal formatting %sICU pattern set%s. For instance, $#,###.## will display values $1,234.56 for value 1234.56. Pay attention that if you use #%% percentage format then your values will be multiplied by 100.', Visualizer_Plugin::NAME ),
461 + '<a href="http://icu-project.org/apiref/icu4c/classDecimalFormat.html#_details" target="_blank">',
462 + '</a>'
463 + ),
464 + sprintf(
465 + esc_html__( 'For date axis labels, this is a subset of the date formatting %sICU date and time format%s.', Visualizer_Plugin::NAME ),
466 + '<a href="http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax" target="_blank">',
467 + '</a>'
468 + )
469 + )
470 + );
471 + }
472 +
473 +}