PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.0.8
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.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 3.10.4 All 148 releases
visualizer / classes / Visualizer / Render / Sidebar.php

Sidebar.php in Visualizer – Tables & Charts Manager with Built-in AI Generator 3.0.8, at classes/Visualizer/Render/Sidebar.php

695 lines 25.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 all chart sidebar groups.
24 *
25 * @category Visualizer
26 * @package Render
27 *
28 * @since 1.0.0
29 * @abstract
30 */
31 abstract class Visualizer_Render_Sidebar extends Visualizer_Render {
32
33 /**
34 * The array of font families accepted by visualization API.
35 *
36 * @since 1.0.0
37 *
38 * @static
39 * @access protected
40 * @var array
41 */
42 protected static $_fontFamilies = array(
43 'Arial' => 'Arial',
44 'Sans Serif' => 'Sans Serif',
45 'serif' => 'Serif',
46 'Arial black' => 'Wide',
47 'Arial Narrow' => 'Narrow',
48 'Comic Sans MS' => 'Comic Sans MS',
49 'Courier New' => 'Courier New',
50 'Garamond' => 'Garamond',
51 'Georgia' => 'Georgia',
52 'Tahoma' => 'Tahoma',
53 'Verdana' => 'Verdana',
54 );
55
56 /**
57 * The Yes/No array.
58 *
59 * @since 1.0.0
60 *
61 * @access protected
62 * @var array
63 */
64 protected $_yesno;
65
66 /**
67 * The array of available legend positions.
68 *
69 * @since 1.0.0
70 *
71 * @access protected
72 * @var array
73 */
74 protected $_legendPositions;
75
76 /**
77 * The array of available alignments.
78 *
79 * @since 1.0.0
80 *
81 * @access protected
82 * @var array
83 */
84 protected $_alignments;
85
86 /**
87 * Constructor.
88 *
89 * @since 1.0.0
90 *
91 * @access public
92 * @param array $data The data what has to be associated with this render.
93 */
94 public function __construct( $data = array() ) {
95 parent::__construct( $data );
96
97 $this->_legendPositions = array(
98 '' => '',
99 'left' => esc_html__( 'Left of the chart', 'visualizer' ),
100 'right' => esc_html__( 'Right of the chart', 'visualizer' ),
101 'top' => esc_html__( 'Above the chart', 'visualizer' ),
102 'bottom' => esc_html__( 'Below the chart', 'visualizer' ),
103 'in' => esc_html__( 'Inside the chart', 'visualizer' ),
104 'none' => esc_html__( 'Omit the legend', 'visualizer' ),
105 );
106
107 $this->_alignments = array(
108 '' => '',
109 'start' => esc_html__( 'Aligned to the start of the allocated area', 'visualizer' ),
110 'center' => esc_html__( 'Centered in the allocated area', 'visualizer' ),
111 'end' => esc_html__( 'Aligned to the end of the allocated area', 'visualizer' ),
112 );
113
114 $this->_yesno = array(
115 '' => '',
116 '1' => esc_html__( 'Yes', 'visualizer' ),
117 '0' => esc_html__( 'No', 'visualizer' ),
118 );
119 }
120
121 /**
122 * Renders chart title settings.
123 *
124 * @since 1.0.0
125 *
126 * @access protected
127 */
128 protected function _renderChartTitleSettings() {
129 self::_renderTextItem(
130 esc_html__( 'Chart Title', 'visualizer' ),
131 'title',
132 $this->title,
133 esc_html__( 'Text to display above the chart.', 'visualizer' )
134 );
135
136 self::_renderColorPickerItem(
137 esc_html__( 'Chart Title Color', 'visualizer' ),
138 'titleTextStyle[color]',
139 isset( $this->titleTextStyle['color'] ) ? $this->titleTextStyle['color'] : null,
140 '#000'
141 );
142 }
143
144 /**
145 * Renders chart advanced settings group.
146 *
147 * @access protected
148 */
149 protected function _renderAdvancedSettings() {
150 self::_renderGroupStart( esc_html__( 'Frontend Actions', 'visualizer' ) );
151 self::_renderSectionStart();
152 self::_renderSectionDescription( esc_html__( 'Configure frontend actions here.', 'visualizer' ) );
153 self::_renderSectionEnd();
154
155 $this->_renderActionSettings();
156 self::_renderGroupEnd();
157
158 self::_renderGroupStart( esc_html__( 'Manual Configuration', 'visualizer' ) );
159 self::_renderSectionStart();
160 self::_renderSectionDescription( __( 'Configure the graph by providing configuration variables right from the', 'visualizer' ) . ' <a href="https://developers.google.com/chart/interactive/docs/reference" target="_blank">Google Visualization</a> API.' );
161
162 $example = '
163 {
164 "vAxis": {
165 "ticks": [5, 10, 15, 20],
166 "titleTextStyle": {
167 "color": "red"
168 },
169 "textPosition": "in"
170 }
171 }';
172
173 self::_renderTextAreaItem(
174 esc_html__( 'Configuration', 'visualizer' ),
175 'manual',
176 $this->manual,
177 sprintf(
178 esc_html__( 'One per line in valid JSON (key:value) format e.g. %s', 'visualizer' ), '<br><code>' . $example . '</code>'
179 ),
180 '',
181 array( 'rows' => 5 )
182 );
183
184 self::_renderSectionEnd();
185 self::_renderGroupEnd();
186
187 }
188
189 /**
190 * Renders chart action buttons group.
191 *
192 * @access protected
193 */
194 protected function _renderActionSettings() {
195 global $wp_version;
196 $disable_actions = version_compare( $wp_version, '4.7.0', '<' );
197 self::_renderSectionStart( esc_html__( 'Actions', 'visualizer' ), false );
198 self::_renderCheckboxItem(
199 esc_html__( 'Print', 'visualizer' ),
200 'actions[]',
201 isset( $this->actions ) && in_array( 'print', $this->actions ) ? true : false,
202 'print',
203 $disable_actions ? '<span class="viz-section-error">' . esc_html__( 'Upgrade to at least WordPress 4.7 to use this.', 'visualizer' ) . '</span>' : esc_html__( 'To enable printing the data.', 'visualizer' ),
204 $disable_actions
205 );
206 self::_renderCheckboxItem(
207 esc_html__( 'CSV', 'visualizer' ),
208 'actions[]',
209 isset( $this->actions ) && in_array( 'csv;application/csv', $this->actions ) ? true : false,
210 'csv;application/csv',
211 $disable_actions ? '<span class="viz-section-error">' . esc_html__( 'Upgrade to at least WordPress 4.7 to use this.', 'visualizer' ) . '</span>' : esc_html__( 'To enable downloading the data as a CSV.', 'visualizer' ),
212 $disable_actions
213 );
214
215 $disabled = ! ( class_exists( 'PHPExcel' ) && extension_loaded( 'zip' ) && extension_loaded( 'xml' ) && version_compare( PHP_VERSION, '5.2.0', '>' ) );
216 self::_renderCheckboxItem(
217 esc_html__( 'Excel', 'visualizer' ),
218 'actions[]',
219 isset( $this->actions ) && in_array( 'xls;application/vnd.ms-excel', $this->actions ) ? true : false,
220 'xls;application/vnd.ms-excel',
221 $disable_actions ? '<span class="viz-section-error">' . esc_html__( 'Upgrade to at least WordPress 4.7 to use this.', 'visualizer' ) . '</span>' : ( $disabled ? '<span class="viz-section-error">' . esc_html__( 'Enable the ZIP and XML extensions to use this setting.', 'visualizer' ) . '</span>' : esc_html__( 'To enable downloading the data as an Excel spreadsheet.', 'visualizer' ) ),
222 $disable_actions || $disabled
223 );
224 self::_renderCheckboxItem(
225 esc_html__( 'Copy', 'visualizer' ),
226 'actions[]',
227 isset( $this->actions ) && in_array( 'copy', $this->actions ) ? true : false,
228 'copy',
229 $disable_actions ? '<span class="viz-section-error">' . esc_html__( 'Upgrade to at least WordPress 4.7 to use this.', 'visualizer' ) . '</span>' : esc_html__( 'To enable copying the data to the clipboard.', 'visualizer' ),
230 $disable_actions
231 );
232 self::_renderSectionEnd();
233 }
234
235 /**
236 * Renders chart general settings group.
237 *
238 * @since 1.0.0
239 *
240 * @access protected
241 */
242 protected function _renderGeneralSettings() {
243 self::_renderGroupStart( esc_html__( 'General Settings', 'visualizer' ) );
244 self::_renderSectionStart();
245 self::_renderSectionDescription( esc_html__( 'Configure title, font styles, tooltip, legend and else settings for the chart.', 'visualizer' ) );
246 self::_renderSectionEnd();
247
248 self::_renderSectionStart( esc_html__( 'Title', 'visualizer' ), false );
249 $this->_renderChartTitleSettings();
250 self::_renderSectionEnd();
251
252 self::_renderSectionStart( esc_html__( 'Font Styles', 'visualizer' ), false );
253 echo '<div class="viz-section-item">';
254 echo '<a class="more-info" href="javascript:;">[?]</a>';
255 echo '<b>', esc_html__( 'Family And Size', 'visualizer' ), '</b>';
256
257 echo '<table class="viz-section-table" cellspacing="0" cellpadding="0" border="0">';
258 echo '<tr>';
259 echo '<td class="viz-section-table-column">';
260 echo '<select name="fontName" class="control-select">';
261 echo '<option></option>';
262 foreach ( self::$_fontFamilies as $font => $label ) {
263 echo '<option value="', $font, '"', selected( $font, $this->fontName, false ), '>';
264 echo $label;
265 echo '</option>';
266 }
267 echo '</select>';
268 echo '</td>';
269 echo '<td class="viz-section-table-column">';
270 echo '<select name="fontSize" class="control-select">';
271 echo '<option></option>';
272 for ( $i = 7; $i <= 20; $i++ ) {
273 echo '<option value="', $i, '"', selected( $i, $this->fontSize, false ), '>', $i, '</option>';
274 }
275 echo '</select>';
276 echo '</td>';
277 echo '</tr>';
278 echo '</table>';
279
280 echo '<p class="viz-section-description">';
281 esc_html_e( 'The default font family and size for all text in the chart.', 'visualizer' );
282 echo '</p>';
283 echo '</div>';
284 self::_renderSectionEnd();
285
286 self::_renderSectionStart( esc_html__( 'Legend', 'visualizer' ), false );
287 self::_renderSelectItem(
288 esc_html__( 'Position', 'visualizer' ),
289 'legend[position]',
290 $this->legend['position'],
291 $this->_legendPositions,
292 esc_html__( 'Determines where to place the legend, compared to the chart area.', 'visualizer' )
293 );
294
295 self::_renderSelectItem(
296 esc_html__( 'Alignment', 'visualizer' ),
297 'legend[alignment]',
298 $this->legend['alignment'],
299 $this->_alignments,
300 esc_html__( 'Determines the alignment of the legend.', 'visualizer' )
301 );
302
303 self::_renderColorPickerItem(
304 esc_html__( 'Font Color', 'visualizer' ),
305 'legend[textStyle][color]',
306 isset( $this->legend['textStyle']['color'] ) ? $this->legend['textStyle']['color'] : null,
307 '#000'
308 );
309 self::_renderSectionEnd();
310
311 self::_renderSectionStart( esc_html__( 'Tooltip', 'visualizer' ), false );
312 $this->_renderTooltipSettigns();
313 self::_renderSectionEnd();
314 self::_renderGroupEnd();
315 }
316
317 /**
318 * Renders tooltip settings section.
319 *
320 * @since 1.4.0
321 *
322 * @access protected
323 */
324 protected function _renderTooltipSettigns() {
325 self::_renderSelectItem(
326 esc_html__( 'Trigger', 'visualizer' ),
327 'tooltip[trigger]',
328 isset( $this->tooltip['trigger'] ) ? $this->tooltip['trigger'] : null,
329 array(
330 '' => '',
331 'focus' => esc_html__( 'The tooltip will be displayed when the user hovers over an element', 'visualizer' ),
332 'selection' => esc_html__( 'The tooltip will be displayed when the user selects an element', 'visualizer' ),
333 'none' => esc_html__( 'The tooltip will not be displayed', 'visualizer' ),
334 ),
335 esc_html__( 'Determines the user interaction that causes the tooltip to be displayed.', 'visualizer' )
336 );
337
338 self::_renderSelectItem(
339 esc_html__( 'Show Color Code', 'visualizer' ),
340 'tooltip[showColorCode]',
341 isset( $this->tooltip['showColorCode'] ) ? $this->tooltip['showColorCode'] : null,
342 $this->_yesno,
343 esc_html__( 'If set to yes, will show colored squares next to the slice information in the tooltip.', 'visualizer' )
344 );
345 }
346
347 /**
348 * Renders chart view settings group.
349 *
350 * @since 1.0.0
351 *
352 * @access protected
353 */
354 protected function _renderViewSettings() {
355 self::_renderGroupStart( esc_html__( 'Layout & Chart Area', 'visualizer' ) );
356 self::_renderSectionStart( esc_html__( 'Layout', 'visualizer' ), false );
357 self::_renderSectionDescription( esc_html__( 'Configure the total size of the chart. Two formats are supported: a number, or a number followed by %. A simple number is a value in pixels; a number followed by % is a percentage.', 'visualizer' ) );
358
359 echo '<div class="viz-section-item">';
360 echo '<a class="more-info" href="javascript:;">[?]</a>';
361 echo '<b>', esc_html__( 'Width And Height Of Chart', 'visualizer' ), '</b>';
362
363 echo '<table class="viz-section-table" cellspacing="0" cellpadding="0" border="0">';
364 echo '<tr>';
365 echo '<td class="viz-section-table-column">';
366 echo '<input type="text" name="width" class="control-text" value="', esc_attr( $this->width ), '" placeholder="100%">';
367 echo '</td>';
368 echo '<td class="viz-section-table-column">';
369 echo '<input type="text" name="height" class="control-text" value="', esc_attr( $this->height ), '" placeholder="400">';
370 echo '</td>';
371 echo '</tr>';
372 echo '</table>';
373
374 echo '<p class="viz-section-description">';
375 esc_html_e( 'Determines the total width and height of the chart.', 'visualizer' );
376 echo '</p>';
377 echo '</div>';
378
379 echo '<div class="viz-section-delimiter"></div>';
380
381 self::_renderSectionDescription( esc_html__( 'Configure the background color for the main area of the chart and the chart border width and color.', 'visualizer' ) );
382
383 self::_renderTextItem(
384 esc_html__( 'Stroke Width', 'visualizer' ),
385 'backgroundColor[strokeWidth]',
386 isset( $this->backgroundColor['strokeWidth'] ) ? $this->backgroundColor['strokeWidth'] : null,
387 esc_html__( 'The chart border width in pixels.', 'visualizer' ),
388 '0'
389 );
390
391 self::_renderColorPickerItem(
392 esc_html__( 'Stroke Color', 'visualizer' ),
393 'backgroundColor[stroke]',
394 ! empty( $this->backgroundColor['stroke'] ) ? $this->backgroundColor['stroke'] : null,
395 '#666'
396 );
397
398 $background_color = ! empty( $this->backgroundColor['fill'] ) ? $this->backgroundColor['fill'] : null;
399 self::_renderColorPickerItem(
400 esc_html__( 'Background Color', 'visualizer' ),
401 'backgroundColor[fill]',
402 $background_color,
403 '#fff'
404 );
405
406 echo '<div class="viz-section-item">';
407 echo '<label>';
408 echo '<input type="checkbox" class="control-checkbox" name="backgroundColor[fill]" value="transparent"', checked( $background_color, 'transparent', false ), '> ';
409 esc_html_e( 'Transparent background', 'visualizer' );
410 echo '</label>';
411 echo '</div>';
412 self::_renderSectionEnd();
413
414 self::_renderSectionStart( esc_html__( 'Chart Area', 'visualizer' ), false );
415 self::_renderSectionDescription( esc_html__( 'Configure the placement and size of the chart area (where the chart itself is drawn, excluding axis and legends). Two formats are supported: a number, or a number followed by %. A simple number is a value in pixels; a number followed by % is a percentage.', 'visualizer' ) );
416
417 echo '<div class="viz-section-item">';
418 echo '<a class="more-info" href="javascript:;">[?]</a>';
419 echo '<b>', esc_html__( 'Left And Top Margins', 'visualizer' ), '</b>';
420
421 echo '<table class="viz-section-table" cellspacing="0" cellpadding="0" border="0">';
422 echo '<tr>';
423 echo '<td class="viz-section-table-column">';
424 echo '<input type="text" name="chartArea[left]" class="control-text" value="', $this->chartArea['left'] || $this->chartArea['left'] === '0' ? esc_attr( $this->chartArea['left'] ) : '', '" placeholder="20%">';
425 echo '</td>';
426 echo '<td class="viz-section-table-column">';
427 echo '<input type="text" name="chartArea[top]" class="control-text" value="', $this->chartArea['top'] || $this->chartArea['top'] === '0' ? esc_attr( $this->chartArea['top'] ) : '', '" placeholder="20%">';
428 echo '</td>';
429 echo '</tr>';
430 echo '</table>';
431
432 echo '<p class="viz-section-description">';
433 esc_html_e( 'Determines how far to draw the chart from the left and top borders.', 'visualizer' );
434 echo '</p>';
435 echo '</div>';
436
437 echo '<div class="viz-section-item">';
438 echo '<a class="more-info" href="javascript:;">[?]</a>';
439 echo '<b>', esc_html__( 'Width And Height Of Chart Area', 'visualizer' ), '</b>';
440
441 echo '<table class="viz-section-table" cellspacing="0" cellpadding="0" border="0">';
442 echo '<tr>';
443 echo '<td class="viz-section-table-column">';
444 echo '<input type="text" name="chartArea[width]" class="control-text" value="', ! empty( $this->chartArea['width'] ) ? esc_attr( $this->chartArea['width'] ) : '', '" placeholder="60%">';
445 echo '</td>';
446 echo '<td class="viz-section-table-column">';
447 echo '<input type="text" name="chartArea[height]" class="control-text" value="', ! empty( $this->chartArea['height'] ) ? esc_attr( $this->chartArea['height'] ) : '', '" placeholder="60%">';
448 echo '</td>';
449 echo '</tr>';
450 echo '</table>';
451
452 echo '<p class="viz-section-description">';
453 esc_html_e( 'Determines the width and hight of the chart area.', 'visualizer' );
454 echo '</p>';
455 echo '</div>';
456 self::_renderSectionEnd();
457 self::_renderGroupEnd();
458 }
459
460 /**
461 * Renders select item.
462 *
463 * @since 1.0.0
464 *
465 * @static
466 * @access public
467 * @param string $title The title of the select item.
468 * @param string $name The name of the select item.
469 * @param string $value The actual value of the select item.
470 * @param array $options The array of select options.
471 * @param string $desc The description of the select item.
472 * @param bool $multiple Is this a multiple select box.
473 * @param array $classes Any additional classes.
474 * @param array $attributes Custom attributes.
475 */
476 public static function _renderSelectItem( $title, $name, $value, array $options, $desc, $multiple = false, $classes = array(), $attributes = array() ) {
477 $atts = '';
478 if ( $attributes ) {
479 foreach ( $attributes as $k => $v ) {
480 $atts .= ' data-visualizer-' . $k . '=' . esc_attr( $v );
481 }
482 }
483 echo '<div class="viz-section-item">';
484 echo '<a class="more-info" href="javascript:;">[?]</a>';
485 echo '<b>', $title, '</b>';
486 echo '<select class="control-select ', implode( ' ', $classes ) , '" name="', $name, '" ', ( $multiple ? 'multiple' : '' ), ' ' , $atts, '>';
487 foreach ( $options as $key => $label ) {
488 $extra = $multiple && is_array( $value ) ? ( in_array( $key, $value ) ? 'selected' : '' ) : selected( $key, $value, false );
489 echo '<option value="', $key, '"', $extra, '>';
490 echo $label;
491 echo '</option>';
492 }
493 echo '</select>';
494 echo '<p class="viz-section-description">', $desc, '</p>';
495 echo '</div>';
496 }
497
498 /**
499 * Renders color picker item.
500 *
501 * @since 1.0.0
502 *
503 * @static
504 * @access protected
505 * @param string $title The title of the select item.
506 * @param string $name The name of the select item.
507 * @param string $value The actual value of the select item.
508 * @param string $default The default value of the color picker.
509 */
510 protected static function _renderColorPickerItem( $title, $name, $value, $default ) {
511 echo '<div class="viz-section-item">';
512 echo '<b>', $title, '</b>';
513 echo '<div>';
514 echo '<input type="text" class="color-picker-hex" name="', $name, '" maxlength="7" placeholder="', esc_attr__( 'Hex Value', 'visualizer' ), '" value="', is_null( $value ) ? $default : esc_attr( $value ), '" data-default-color="', $default, '">';
515 echo '</div>';
516 echo '</div>';
517 }
518
519 /**
520 * Renders text item.
521 *
522 * @since 1.0.0
523 *
524 * @static
525 * @access protected
526 * @param string $title The title of the select item.
527 * @param string $name The name of the select item.
528 * @param string $value The actual value of the select item.
529 * @param string $desc The description of the select item.
530 * @param string $placeholder The placeholder for the input.
531 * @param string $type The type for the input (out of number, email, tel etc., default is text).
532 * @param array $custom_attributes The custom attributes.
533 */
534 protected static function _renderTextItem( $title, $name, $value, $desc, $placeholder = '', $type = 'text', $custom_attributes = array() ) {
535 $attributes = '';
536 if ( $custom_attributes ) {
537 foreach ( $custom_attributes as $k => $v ) {
538 $attributes .= ' ' . $k . '="' . esc_attr( $v ) . '"';
539 }
540 }
541 echo '<div class="viz-section-item">';
542 echo '<a class="more-info" href="javascript:;">[?]</a>';
543 echo '<b>', $title, '</b>';
544 echo '<input type="', $type, '" class="control-text" ', $attributes, ' name="', $name, '" value="', esc_attr( $value ), '" placeholder="', $placeholder, '">';
545 echo '<p class="viz-section-description">', $desc, '</p>';
546 echo '</div>';
547 }
548
549 /**
550 * Renders the beginning of a group.
551 *
552 * @since 1.0.0
553 *
554 * @static
555 * @access public
556 * @param string $title The title of this group.
557 * @param string $html Any additional HTML.
558 * @param string $class Any additional classes.
559 */
560 public static function _renderGroupStart( $title, $html = '', $class = '' ) {
561 echo '<li class="viz-group ' . $class . '">';
562 echo '<h3 class="viz-group-title">', $title, '</h3>';
563 echo $html;
564 echo '<ul class="viz-group-content">';
565 }
566
567 /**
568 * Renders the ending of a group.
569 *
570 * @since 1.0.0
571 *
572 * @static
573 * @access public
574 */
575 public static function _renderGroupEnd() {
576 echo '</ul>';
577 echo '</li>';
578 }
579
580 /**
581 * Renders the beginning of a section.
582 *
583 * @since 1.0.0
584 *
585 * @static
586 * @access public
587 * @param string $title The title of this section. If the title is empty, no title will be displayed.
588 * @param boolean $open Determines whether the section items block has to be expanded or collapsed.
589 */
590 public static function _renderSectionStart( $title = false, $open = true ) {
591
592 if ( ! empty( $title ) ) {
593 echo '<li class="viz-subsection">';
594 echo '<span class="viz-section-title">', $title, '</span>';
595 } else {
596 echo '<li class=" ">';
597 }
598 echo '<div class="viz-section-items section-items', $open ? ' open' : '', '">';
599 }
600
601 /**
602 * Renders the ending of a section.
603 *
604 * @since 1.0.0
605 *
606 * @public
607 * @access protected
608 * @param string $html Any addition HTML to add.
609 */
610 public static function _renderSectionEnd( $html = '' ) {
611 echo '</div>';
612 echo $html;
613 echo '</li>';
614 }
615
616 /**
617 * Renders section description block.
618 *
619 * @since 1.0.0
620 *
621 * @static
622 * @access public
623 * @param string $description The description text.
624 */
625 public static function _renderSectionDescription( $description ) {
626 echo '<div class="viz-section-item">';
627 echo '<div class="viz-section-description">', $description, '</div>';
628 echo '</div>';
629 }
630
631 /**
632 * Renders format field according to series type.
633 *
634 * @since 1.3.0
635 *
636 * @access protected
637 * @param int $index The index of the series.
638 */
639 protected function _renderFormatField( $index = 0 ) {
640 switch ( $this->__series[ $index + 1 ]['type'] ) {
641 case 'number':
642 self::_renderTextItem(
643 esc_html__( 'Number Format', 'visualizer' ),
644 'series[' . $index . '][format]',
645 isset( $this->series[ $index ]['format'] ) ? $this->series[ $index ]['format'] : '',
646 sprintf( esc_html__( 'Enter custom format pattern to apply to this series value, similar to the %1$sICU pattern set%2$s. Use something like #,### to get 1,234 as output, or $# to add dollar sign before digits. Pay attention that if you use &#37; percentage format then your values will be multiplied by 100.', 'visualizer' ), '<a href="http://icu-project.org/apiref/icu4c/classDecimalFormat.html#_details" target="_blank">', '</a>' ),
647 '#,###.##'
648 );
649 break;
650 case 'date':
651 case 'datetime':
652 case 'timeofday':
653 self::_renderTextItem(
654 esc_html__( 'Date Format', 'visualizer' ),
655 'series[' . $index . '][format]',
656 isset( $this->series[ $index ]['format'] ) ? $this->series[ $index ]['format'] : '',
657 sprintf( esc_html__( 'Enter custom format pattern to apply to this series value, similar to the %1$sICU date and time format%2$s.', 'visualizer' ), '<a href="http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax" target="_blank">', '</a>' ),
658 'eeee, dd LLLL yyyy'
659 );
660 break;
661 }
662 }
663
664 /**
665 * Render a checkbox item
666 */
667 protected static function _renderCheckboxItem( $title, $name, $value, $default, $desc, $disabled = false ) {
668 echo '<div class="viz-section-item">';
669 echo '<a class="more-info" href="javascript:;">[?]</a>';
670 echo '<b>', $title, '</b>';
671 echo '<input type="checkbox" class="control-check" value="', $default, '" name="', $name, '" ', ( $value == $default ? 'checked' : '' ), ' ', ( $disabled ? 'disabled=disabled' : '' ), '>';
672 echo '<p class="viz-section-description">', $desc, '</p>';
673 echo '</div>';
674 }
675
676 /**
677 * Render a textarea item.
678 */
679 protected static function _renderTextAreaItem( $title, $name, $value, $desc, $placeholder = '', $custom_attributes = array() ) {
680 $attributes = '';
681 if ( $custom_attributes ) {
682 foreach ( $custom_attributes as $k => $v ) {
683 $attributes .= ' ' . $k . '="' . esc_attr( $v ) . '"';
684 }
685 }
686 echo '<div class="viz-section-item">';
687 echo '<a class="more-info" href="javascript:;">[?]</a>';
688 echo '<b>', $title, '</b>';
689 echo '<textarea class="control-text" ', $attributes, ' name="', $name, '" placeholder="', $placeholder, '">', $value, '</textarea>';
690 echo '<p class="viz-section-description">', $desc, '</p>';
691 echo '</div>';
692 }
693
694 }
695