PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.0.1
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.0.1
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.1, at classes/Visualizer/Render/Sidebar.php

690 lines 24.4 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 self::_renderSectionStart( esc_html__( 'Actions', 'visualizer' ), false );
196 self::_renderCheckboxItem(
197 esc_html__( 'Print', 'visualizer' ),
198 'actions[]',
199 isset( $this->actions ) && in_array( 'print', $this->actions ) ? true : false,
200 'print',
201 esc_html__( 'To enable printing the data.', 'visualizer' )
202 );
203 self::_renderCheckboxItem(
204 esc_html__( 'CSV', 'visualizer' ),
205 'actions[]',
206 isset( $this->actions ) && in_array( 'csv;application/csv', $this->actions ) ? true : false,
207 'csv;application/csv',
208 esc_html__( 'To enable downloading the data as a CSV.', 'visualizer' )
209 );
210
211 $disabled = ! ( extension_loaded( 'zip' ) && extension_loaded( 'xml' ) && version_compare( PHP_VERSION, '5.2.0', '>' ) );
212 self::_renderCheckboxItem(
213 esc_html__( 'Excel', 'visualizer' ),
214 'actions[]',
215 isset( $this->actions ) && in_array( 'xls;application/vnd.ms-excel', $this->actions ) ? true : false,
216 'xls;application/vnd.ms-excel',
217 $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' ),
218 $disabled
219 );
220 self::_renderCheckboxItem(
221 esc_html__( 'Copy', 'visualizer' ),
222 'actions[]',
223 isset( $this->actions ) && in_array( 'copy', $this->actions ) ? true : false,
224 'copy',
225 esc_html__( 'To enable copying the data to the clipboard.', 'visualizer' )
226 );
227 self::_renderSectionEnd();
228 }
229
230 /**
231 * Renders chart general settings group.
232 *
233 * @since 1.0.0
234 *
235 * @access protected
236 */
237 protected function _renderGeneralSettings() {
238 self::_renderGroupStart( esc_html__( 'General Settings', 'visualizer' ) );
239 self::_renderSectionStart();
240 self::_renderSectionDescription( esc_html__( 'Configure title, font styles, tooltip, legend and else settings for the chart.', 'visualizer' ) );
241 self::_renderSectionEnd();
242
243 self::_renderSectionStart( esc_html__( 'Title', 'visualizer' ), false );
244 $this->_renderChartTitleSettings();
245 self::_renderSectionEnd();
246
247 self::_renderSectionStart( esc_html__( 'Font Styles', 'visualizer' ), false );
248 echo '<div class="viz-section-item">';
249 echo '<a class="more-info" href="javascript:;">[?]</a>';
250 echo '<b>', esc_html__( 'Family And Size', 'visualizer' ), '</b>';
251
252 echo '<table class="viz-section-table" cellspacing="0" cellpadding="0" border="0">';
253 echo '<tr>';
254 echo '<td class="viz-section-table-column">';
255 echo '<select name="fontName" class="control-select">';
256 echo '<option></option>';
257 foreach ( self::$_fontFamilies as $font => $label ) {
258 echo '<option value="', $font, '"', selected( $font, $this->fontName, false ), '>';
259 echo $label;
260 echo '</option>';
261 }
262 echo '</select>';
263 echo '</td>';
264 echo '<td class="viz-section-table-column">';
265 echo '<select name="fontSize" class="control-select">';
266 echo '<option></option>';
267 for ( $i = 7; $i <= 20; $i++ ) {
268 echo '<option value="', $i, '"', selected( $i, $this->fontSize, false ), '>', $i, '</option>';
269 }
270 echo '</select>';
271 echo '</td>';
272 echo '</tr>';
273 echo '</table>';
274
275 echo '<p class="viz-section-description">';
276 esc_html_e( 'The default font family and size for all text in the chart.', 'visualizer' );
277 echo '</p>';
278 echo '</div>';
279 self::_renderSectionEnd();
280
281 self::_renderSectionStart( esc_html__( 'Legend', 'visualizer' ), false );
282 self::_renderSelectItem(
283 esc_html__( 'Position', 'visualizer' ),
284 'legend[position]',
285 $this->legend['position'],
286 $this->_legendPositions,
287 esc_html__( 'Determines where to place the legend, compared to the chart area.', 'visualizer' )
288 );
289
290 self::_renderSelectItem(
291 esc_html__( 'Alignment', 'visualizer' ),
292 'legend[alignment]',
293 $this->legend['alignment'],
294 $this->_alignments,
295 esc_html__( 'Determines the alignment of the legend.', 'visualizer' )
296 );
297
298 self::_renderColorPickerItem(
299 esc_html__( 'Font Color', 'visualizer' ),
300 'legend[textStyle][color]',
301 isset( $this->legend['textStyle']['color'] ) ? $this->legend['textStyle']['color'] : null,
302 '#000'
303 );
304 self::_renderSectionEnd();
305
306 self::_renderSectionStart( esc_html__( 'Tooltip', 'visualizer' ), false );
307 $this->_renderTooltipSettigns();
308 self::_renderSectionEnd();
309 self::_renderGroupEnd();
310 }
311
312 /**
313 * Renders tooltip settings section.
314 *
315 * @since 1.4.0
316 *
317 * @access protected
318 */
319 protected function _renderTooltipSettigns() {
320 self::_renderSelectItem(
321 esc_html__( 'Trigger', 'visualizer' ),
322 'tooltip[trigger]',
323 isset( $this->tooltip['trigger'] ) ? $this->tooltip['trigger'] : null,
324 array(
325 '' => '',
326 'focus' => esc_html__( 'The tooltip will be displayed when the user hovers over an element', 'visualizer' ),
327 'selection' => esc_html__( 'The tooltip will be displayed when the user selects an element', 'visualizer' ),
328 'none' => esc_html__( 'The tooltip will not be displayed', 'visualizer' ),
329 ),
330 esc_html__( 'Determines the user interaction that causes the tooltip to be displayed.', 'visualizer' )
331 );
332
333 self::_renderSelectItem(
334 esc_html__( 'Show Color Code', 'visualizer' ),
335 'tooltip[showColorCode]',
336 isset( $this->tooltip['showColorCode'] ) ? $this->tooltip['showColorCode'] : null,
337 $this->_yesno,
338 esc_html__( 'If set to yes, will show colored squares next to the slice information in the tooltip.', 'visualizer' )
339 );
340 }
341
342 /**
343 * Renders chart view settings group.
344 *
345 * @since 1.0.0
346 *
347 * @access protected
348 */
349 protected function _renderViewSettings() {
350 self::_renderGroupStart( esc_html__( 'Layout & Chart Area', 'visualizer' ) );
351 self::_renderSectionStart( esc_html__( 'Layout', 'visualizer' ), false );
352 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' ) );
353
354 echo '<div class="viz-section-item">';
355 echo '<a class="more-info" href="javascript:;">[?]</a>';
356 echo '<b>', esc_html__( 'Width And Height Of Chart', 'visualizer' ), '</b>';
357
358 echo '<table class="viz-section-table" cellspacing="0" cellpadding="0" border="0">';
359 echo '<tr>';
360 echo '<td class="viz-section-table-column">';
361 echo '<input type="text" name="width" class="control-text" value="', esc_attr( $this->width ), '" placeholder="100%">';
362 echo '</td>';
363 echo '<td class="viz-section-table-column">';
364 echo '<input type="text" name="height" class="control-text" value="', esc_attr( $this->height ), '" placeholder="400">';
365 echo '</td>';
366 echo '</tr>';
367 echo '</table>';
368
369 echo '<p class="viz-section-description">';
370 esc_html_e( 'Determines the total width and height of the chart.', 'visualizer' );
371 echo '</p>';
372 echo '</div>';
373
374 echo '<div class="viz-section-delimiter"></div>';
375
376 self::_renderSectionDescription( esc_html__( 'Configure the background color for the main area of the chart and the chart border width and color.', 'visualizer' ) );
377
378 self::_renderTextItem(
379 esc_html__( 'Stroke Width', 'visualizer' ),
380 'backgroundColor[strokeWidth]',
381 isset( $this->backgroundColor['strokeWidth'] ) ? $this->backgroundColor['strokeWidth'] : null,
382 esc_html__( 'The chart border width in pixels.', 'visualizer' ),
383 '0'
384 );
385
386 self::_renderColorPickerItem(
387 esc_html__( 'Stroke Color', 'visualizer' ),
388 'backgroundColor[stroke]',
389 ! empty( $this->backgroundColor['stroke'] ) ? $this->backgroundColor['stroke'] : null,
390 '#666'
391 );
392
393 $background_color = ! empty( $this->backgroundColor['fill'] ) ? $this->backgroundColor['fill'] : null;
394 self::_renderColorPickerItem(
395 esc_html__( 'Background Color', 'visualizer' ),
396 'backgroundColor[fill]',
397 $background_color,
398 '#fff'
399 );
400
401 echo '<div class="viz-section-item">';
402 echo '<label>';
403 echo '<input type="checkbox" class="control-checkbox" name="backgroundColor[fill]" value="transparent"', checked( $background_color, 'transparent', false ), '> ';
404 esc_html_e( 'Transparent background', 'visualizer' );
405 echo '</label>';
406 echo '</div>';
407 self::_renderSectionEnd();
408
409 self::_renderSectionStart( esc_html__( 'Chart Area', 'visualizer' ), false );
410 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' ) );
411
412 echo '<div class="viz-section-item">';
413 echo '<a class="more-info" href="javascript:;">[?]</a>';
414 echo '<b>', esc_html__( 'Left And Top Margins', 'visualizer' ), '</b>';
415
416 echo '<table class="viz-section-table" cellspacing="0" cellpadding="0" border="0">';
417 echo '<tr>';
418 echo '<td class="viz-section-table-column">';
419 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%">';
420 echo '</td>';
421 echo '<td class="viz-section-table-column">';
422 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%">';
423 echo '</td>';
424 echo '</tr>';
425 echo '</table>';
426
427 echo '<p class="viz-section-description">';
428 esc_html_e( 'Determines how far to draw the chart from the left and top borders.', 'visualizer' );
429 echo '</p>';
430 echo '</div>';
431
432 echo '<div class="viz-section-item">';
433 echo '<a class="more-info" href="javascript:;">[?]</a>';
434 echo '<b>', esc_html__( 'Width And Height Of Chart Area', 'visualizer' ), '</b>';
435
436 echo '<table class="viz-section-table" cellspacing="0" cellpadding="0" border="0">';
437 echo '<tr>';
438 echo '<td class="viz-section-table-column">';
439 echo '<input type="text" name="chartArea[width]" class="control-text" value="', ! empty( $this->chartArea['width'] ) ? esc_attr( $this->chartArea['width'] ) : '', '" placeholder="60%">';
440 echo '</td>';
441 echo '<td class="viz-section-table-column">';
442 echo '<input type="text" name="chartArea[height]" class="control-text" value="', ! empty( $this->chartArea['height'] ) ? esc_attr( $this->chartArea['height'] ) : '', '" placeholder="60%">';
443 echo '</td>';
444 echo '</tr>';
445 echo '</table>';
446
447 echo '<p class="viz-section-description">';
448 esc_html_e( 'Determines the width and hight of the chart area.', 'visualizer' );
449 echo '</p>';
450 echo '</div>';
451 self::_renderSectionEnd();
452 self::_renderGroupEnd();
453 }
454
455 /**
456 * Renders select item.
457 *
458 * @since 1.0.0
459 *
460 * @static
461 * @access public
462 * @param string $title The title of the select item.
463 * @param string $name The name of the select item.
464 * @param string $value The actual value of the select item.
465 * @param array $options The array of select options.
466 * @param string $desc The description of the select item.
467 * @param bool $multiple Is this a multiple select box.
468 * @param array $classes Any additional classes.
469 * @param array $attributes Custom attributes.
470 */
471 public static function _renderSelectItem( $title, $name, $value, array $options, $desc, $multiple = false, $classes = array(), $attributes = array() ) {
472 $atts = '';
473 if ( $attributes ) {
474 foreach ( $attributes as $k => $v ) {
475 $atts .= ' data-visualizer-' . $k . '=' . esc_attr( $v );
476 }
477 }
478 echo '<div class="viz-section-item">';
479 echo '<a class="more-info" href="javascript:;">[?]</a>';
480 echo '<b>', $title, '</b>';
481 echo '<select class="control-select ', implode( ' ', $classes ) , '" name="', $name, '" ', ( $multiple ? 'multiple' : '' ), ' ' , $atts, '>';
482 foreach ( $options as $key => $label ) {
483 $extra = $multiple && is_array( $value ) ? ( in_array( $key, $value ) ? 'selected' : '' ) : selected( $key, $value, false );
484 echo '<option value="', $key, '"', $extra, '>';
485 echo $label;
486 echo '</option>';
487 }
488 echo '</select>';
489 echo '<p class="viz-section-description">', $desc, '</p>';
490 echo '</div>';
491 }
492
493 /**
494 * Renders color picker item.
495 *
496 * @since 1.0.0
497 *
498 * @static
499 * @access protected
500 * @param string $title The title of the select item.
501 * @param string $name The name of the select item.
502 * @param string $value The actual value of the select item.
503 * @param string $default The default value of the color picker.
504 */
505 protected static function _renderColorPickerItem( $title, $name, $value, $default ) {
506 echo '<div class="viz-section-item">';
507 echo '<b>', $title, '</b>';
508 echo '<div>';
509 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, '">';
510 echo '</div>';
511 echo '</div>';
512 }
513
514 /**
515 * Renders text item.
516 *
517 * @since 1.0.0
518 *
519 * @static
520 * @access protected
521 * @param string $title The title of the select item.
522 * @param string $name The name of the select item.
523 * @param string $value The actual value of the select item.
524 * @param string $desc The description of the select item.
525 * @param string $placeholder The placeholder for the input.
526 * @param string $type The type for the input (out of number, email, tel etc., default is text).
527 * @param array $custom_attributes The custom attributes.
528 */
529 protected static function _renderTextItem( $title, $name, $value, $desc, $placeholder = '', $type = 'text', $custom_attributes = array() ) {
530 $attributes = '';
531 if ( $custom_attributes ) {
532 foreach ( $custom_attributes as $k => $v ) {
533 $attributes .= ' ' . $k . '="' . esc_attr( $v ) . '"';
534 }
535 }
536 echo '<div class="viz-section-item">';
537 echo '<a class="more-info" href="javascript:;">[?]</a>';
538 echo '<b>', $title, '</b>';
539 echo '<input type="', $type, '" class="control-text" ', $attributes, ' name="', $name, '" value="', esc_attr( $value ), '" placeholder="', $placeholder, '">';
540 echo '<p class="viz-section-description">', $desc, '</p>';
541 echo '</div>';
542 }
543
544 /**
545 * Renders the beginning of a group.
546 *
547 * @since 1.0.0
548 *
549 * @static
550 * @access public
551 * @param string $title The title of this group.
552 * @param string $html Any additional HTML.
553 * @param string $class Any additional classes.
554 */
555 public static function _renderGroupStart( $title, $html = '', $class = '' ) {
556 echo '<li class="viz-group ' . $class . '">';
557 echo '<h3 class="viz-group-title">', $title, '</h3>';
558 echo $html;
559 echo '<ul class="viz-group-content">';
560 }
561
562 /**
563 * Renders the ending of a group.
564 *
565 * @since 1.0.0
566 *
567 * @static
568 * @access public
569 */
570 public static function _renderGroupEnd() {
571 echo '</ul>';
572 echo '</li>';
573 }
574
575 /**
576 * Renders the beginning of a section.
577 *
578 * @since 1.0.0
579 *
580 * @static
581 * @access public
582 * @param string $title The title of this section. If the title is empty, no title will be displayed.
583 * @param boolean $open Determines whether the section items block has to be expanded or collapsed.
584 */
585 public static function _renderSectionStart( $title = false, $open = true ) {
586
587 if ( ! empty( $title ) ) {
588 echo '<li class="viz-subsection">';
589 echo '<span class="viz-section-title">', $title, '</span>';
590 } else {
591 echo '<li class=" ">';
592 }
593 echo '<div class="viz-section-items section-items', $open ? ' open' : '', '">';
594 }
595
596 /**
597 * Renders the ending of a section.
598 *
599 * @since 1.0.0
600 *
601 * @public
602 * @access protected
603 * @param string $html Any addition HTML to add.
604 */
605 public static function _renderSectionEnd( $html = '' ) {
606 echo '</div>';
607 echo $html;
608 echo '</li>';
609 }
610
611 /**
612 * Renders section description block.
613 *
614 * @since 1.0.0
615 *
616 * @static
617 * @access public
618 * @param string $description The description text.
619 */
620 public static function _renderSectionDescription( $description ) {
621 echo '<div class="viz-section-item">';
622 echo '<div class="viz-section-description">', $description, '</div>';
623 echo '</div>';
624 }
625
626 /**
627 * Renders format field according to series type.
628 *
629 * @since 1.3.0
630 *
631 * @access protected
632 * @param int $index The index of the series.
633 */
634 protected function _renderFormatField( $index = 0 ) {
635 switch ( $this->__series[ $index + 1 ]['type'] ) {
636 case 'number':
637 self::_renderTextItem(
638 esc_html__( 'Number Format', 'visualizer' ),
639 'series[' . $index . '][format]',
640 isset( $this->series[ $index ]['format'] ) ? $this->series[ $index ]['format'] : '',
641 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>' ),
642 '#,###.##'
643 );
644 break;
645 case 'date':
646 case 'datetime':
647 case 'timeofday':
648 self::_renderTextItem(
649 esc_html__( 'Date Format', 'visualizer' ),
650 'series[' . $index . '][format]',
651 isset( $this->series[ $index ]['format'] ) ? $this->series[ $index ]['format'] : '',
652 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>' ),
653 'eeee, dd LLLL yyyy'
654 );
655 break;
656 }
657 }
658
659 /**
660 * Render a checkbox item
661 */
662 protected static function _renderCheckboxItem( $title, $name, $value, $default, $desc, $disabled = false ) {
663 echo '<div class="viz-section-item">';
664 echo '<a class="more-info" href="javascript:;">[?]</a>';
665 echo '<b>', $title, '</b>';
666 echo '<input type="checkbox" class="control-check" value="', $default, '" name="', $name, '" ', ($value == $default ? 'checked' : ''), ' ', ($disabled ? 'disabled=disabled' : ''), '>';
667 echo '<p class="viz-section-description">', $desc, '</p>';
668 echo '</div>';
669 }
670
671 /**
672 * Render a textarea item.
673 */
674 protected static function _renderTextAreaItem( $title, $name, $value, $desc, $placeholder = '', $custom_attributes = array() ) {
675 $attributes = '';
676 if ( $custom_attributes ) {
677 foreach ( $custom_attributes as $k => $v ) {
678 $attributes .= ' ' . $k . '="' . esc_attr( $v ) . '"';
679 }
680 }
681 echo '<div class="viz-section-item">';
682 echo '<a class="more-info" href="javascript:;">[?]</a>';
683 echo '<b>', $title, '</b>';
684 echo '<textarea class="control-text" ', $attributes, ' name="', $name, '" placeholder="', $placeholder, '">', $value, '</textarea>';
685 echo '<p class="viz-section-description">', $desc, '</p>';
686 echo '</div>';
687 }
688
689 }
690