PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.7.12
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.7.12
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 / Linear.php

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

298 lines 9.8 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 sidebar settings of linear 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_Linear extends Visualizer_Render_Sidebar_Graph {
33
34 /**
35 * Determines whether we need to render curve type option or not.
36 *
37 * @since 1.0.0
38 *
39 * @access protected
40 * @var boolean
41 */
42 protected $_includeCurveTypes;
43
44 /**
45 * The array of available curve types.
46 *
47 * @since 1.0.0
48 *
49 * @access protected
50 * @var array
51 */
52 protected $_curveTypes;
53
54 /**
55 * Determines whether we need to render focus target option or not.
56 *
57 * @since 1.0.0
58 *
59 * @access protected
60 * @var boolean
61 */
62 protected $_includeFocusTarget;
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->_includeCurveTypes = true;
76 $this->_includeFocusTarget = true;
77
78 $this->_curveTypes = array(
79 '' => '',
80 'none' => esc_html__( 'Straight line without curve', 'visualizer' ),
81 'function' => esc_html__( 'The angles of the line will be smoothed', 'visualizer' ),
82 );
83 }
84
85 /**
86 * Renders general settings block for horizontal axis settings.
87 *
88 * @since 1.4.0
89 *
90 * @access protected
91 */
92 protected function _renderHorizontalAxisGeneralSettings() {
93 parent::_renderHorizontalAxisGeneralSettings();
94
95 self::_renderColorPickerItem(
96 esc_html__( 'Axis Text Color', 'visualizer' ),
97 'hAxis[textStyle]',
98 isset( $this->hAxis['textStyle'] ) ? $this->hAxis['textStyle'] : null,
99 '#000'
100 );
101
102 $this->_renderHorizontalAxisFormatField();
103 }
104
105 /**
106 * Renders general settings block for vertical axis settings.
107 *
108 * @since 1.4.0
109 *
110 * @access protected
111 */
112 protected function _renderVerticalAxisGeneralSettings() {
113 parent::_renderVerticalAxisGeneralSettings();
114
115 self::_renderColorPickerItem(
116 esc_html__( 'Axis Text Color', 'visualizer' ),
117 'vAxis[textStyle]',
118 isset( $this->vAxis['textStyle'] ) ? $this->vAxis['textStyle'] : null,
119 '#000'
120 );
121
122 $this->_renderVerticalAxisFormatField();
123 }
124
125 /**
126 * Renders line settings items.
127 *
128 * @since 1.0.0
129 *
130 * @access protected
131 */
132 protected function _renderLineSettingsItems() {
133 echo '<div class="viz-section-item">';
134 echo '<a class="more-info" href="javascript:;">[?]</a>';
135 echo '<b>', esc_html__( 'Line Width And Point Size', 'visualizer' ), '</b>';
136
137 echo '<table class="viz-section-table" cellspacing="0" cellpadding="0" border="0">';
138 echo '<tr>';
139 echo '<td class="viz-section-table-column">';
140 echo '<input type="text" name="lineWidth" class="control-text" value="', esc_attr( $this->lineWidth ), '" placeholder="2">';
141 echo '</td>';
142 echo '<td class="viz-section-table-column">';
143 echo '<input type="text" name="pointSize" class="control-text" value="', esc_attr( $this->pointSize ), '" placeholder="0">';
144 echo '</td>';
145 echo '</tr>';
146 echo '</table>';
147
148 echo '<p class="viz-section-description">';
149 esc_html_e( 'Data line width and diameter of displayed points in pixels. Use zero to hide all lines or points.', 'visualizer' );
150 echo '</p>';
151 echo '</div>';
152
153 if ( $this->_includeCurveTypes ) {
154 self::_renderSelectItem(
155 esc_html__( 'Curve Type', 'visualizer' ),
156 'curveType',
157 $this->curveType,
158 $this->_curveTypes,
159 esc_html__( 'Determines whether the series has to be presented in the legend or not.', 'visualizer' )
160 );
161 }
162
163 echo '<div class="viz-section-delimiter"></div>';
164
165 if ( $this->_includeFocusTarget ) {
166 self::_renderSelectItem(
167 esc_html__( 'Focus Target', 'visualizer' ),
168 'focusTarget',
169 $this->focusTarget,
170 array(
171 '' => '',
172 'datum' => esc_html__( 'Focus on a single data point.', 'visualizer' ),
173 'category' => esc_html__( 'Focus on a grouping of all data points along the major axis.', 'visualizer' ),
174 ),
175 esc_html__( 'The type of the entity that receives focus on mouse hover. Also affects which entity is selected by mouse click.', 'visualizer' )
176 );
177 }
178
179 self::_renderSelectItem(
180 esc_html__( 'Selection Mode', 'visualizer' ),
181 'selectionMode',
182 $this->selectionMode,
183 array(
184 '' => '',
185 'single' => esc_html__( 'Single data point', 'visualizer' ),
186 'multiple' => esc_html__( 'Multiple data points', 'visualizer' ),
187 ),
188 esc_html__( 'Determines how many data points an user can select on a chart.', 'visualizer' )
189 );
190
191 self::_renderSelectItem(
192 esc_html__( 'Aggregation Target', 'visualizer' ),
193 'aggregationTarget',
194 $this->aggregationTarget,
195 array(
196 '' => '',
197 'category' => esc_html__( 'Group selected data by x-value', 'visualizer' ),
198 'series' => esc_html__( 'Group selected data by series', 'visualizer' ),
199 'auto' => esc_html__( 'Group selected data by x-value if all selections have the same x-value, and by series otherwise', 'visualizer' ),
200 'none' => esc_html__( 'Show only one tooltip per selection', 'visualizer' ),
201 ),
202 esc_html__( 'Determines how multiple data selections are rolled up into tooltips. To make it working you need to set multiple selection mode and tooltip trigger to display it when an user selects an element.', 'visualizer' )
203 );
204
205 echo '<div class="viz-section-delimiter"></div>';
206
207 self::_renderTextItem(
208 esc_html__( 'Point Opacity', 'visualizer' ),
209 'dataOpacity',
210 $this->dataOpacity,
211 esc_html__( 'The transparency of data points, with 1.0 being completely opaque and 0.0 fully transparent.', 'visualizer' ),
212 '1.0'
213 );
214 }
215
216 /**
217 * Renders lines settings.
218 *
219 * @since 1.0.0
220 *
221 * @access protected
222 */
223 protected function _renderLineSettings() {
224 self::_renderGroupStart( esc_html__( 'Lines Settings', 'visualizer' ) );
225 self::_renderSectionStart();
226 $this->_renderLineSettingsItems();
227 self::_renderSectionEnd();
228 self::_renderGroupEnd();
229 }
230
231 /**
232 * Renders concreate series settings.
233 *
234 * @since 1.0.0
235 *
236 * @access protected
237 * @param int $index The series index.
238 */
239 protected function _renderSeries( $index ) {
240 self::_renderSelectItem(
241 esc_html__( 'Visible In Legend', 'visualizer' ),
242 'series[' . $index . '][visibleInLegend]',
243 isset( $this->series[ $index ]['visibleInLegend'] ) ? $this->series[ $index ]['visibleInLegend'] : '',
244 array(
245 '' => '',
246 '0' => esc_html__( 'No', 'visualizer' ),
247 '1' => esc_html__( 'Yes', 'visualizer' ),
248 ),
249 esc_html__( 'Determines whether the series has to be presented in the legend or not.', 'visualizer' )
250 );
251
252 echo '<div class="viz-section-item">';
253 echo '<a class="more-info" href="javascript:;">[?]</a>';
254 echo '<b>', esc_html__( 'Line Width And Point Size', 'visualizer' ), '</b>';
255
256 echo '<table class="viz-section-table" cellspacing="0" cellpadding="0" border="0">';
257 echo '<tr>';
258 echo '<td class="viz-section-table-column">';
259 $line_width = isset( $this->series[ $index ]['lineWidth'] ) ? $this->series[ $index ]['lineWidth'] : '';
260 echo '<input type="text" name="series[', $index, '][lineWidth]" class="control-text series-linewidth" value="', esc_attr( $line_width ), '" placeholder="2">';
261 echo '</td>';
262 echo '<td class="viz-section-table-column">';
263 $point_size = isset( $this->series[ $index ]['pointSize'] ) ? $this->series[ $index ]['pointSize'] : '';
264 echo '<input type="text" name="series[', $index, '][pointSize]" class="control-text" value="', esc_attr( $point_size ), '" placeholder="0">';
265 echo '</td>';
266 echo '</tr>';
267 echo '</table>';
268
269 echo '<p class="viz-section-description">';
270 esc_html_e( 'Overrides the global line width and point size values for this series.', 'visualizer' );
271 echo '</p>';
272 echo '</div>';
273
274 $this->_renderFormatField( $index );
275
276 if ( $this->_includeCurveTypes ) {
277 self::_renderSelectItem(
278 esc_html__( 'Curve Type', 'visualizer' ),
279 'series[' . $index . '][curveType]',
280 isset( $this->series[ $index ]['curveType'] ) ? $this->series[ $index ]['curveType'] : '',
281 $this->_curveTypes,
282 esc_html__( 'Determines whether the series has to be presented in the legend or not.', 'visualizer' )
283 );
284 }
285
286 self::_renderColorPickerItem(
287 esc_html__( 'Color', 'visualizer' ),
288 'series[' . $index . '][color]',
289 isset( $this->series[ $index ]['color'] ) ? $this->series[ $index ]['color'] : null,
290 null
291 );
292
293 $this->_renderRoleField( $index );
294
295 }
296
297 }
298