|
// +----------------------------------------------------------------------+
/**
* Base class for sidebar settings of linear based charts.
*
* @category Visualizer
* @package Render
* @subpackage Sidebar
*
* @since 1.0.0
* @abstract
*/
abstract class Visualizer_Render_Sidebar_Linear extends Visualizer_Render_Sidebar_Graph {
/**
* Determines whether we need to render curve type option or not.
*
* @since 1.0.0
*
* @access protected
* @var boolean
*/
protected $_includeCurveTypes;
/**
* The array of available curve types.
*
* @since 1.0.0
*
* @access protected
* @var array
*/
protected $_curveTypes;
/**
* Determines whether we need to render focus target option or not.
*
* @since 1.0.0
*
* @access protected
* @var boolean
*/
protected $_includeFocusTarget;
/**
* Constructor.
*
* @since 1.0.0
*
* @access public
* @param array $data The data what has to be associated with this render.
*/
public function __construct( $data = array() ) {
parent::__construct( $data );
$this->_includeCurveTypes = true;
$this->_includeFocusTarget = true;
$this->_curveTypes = array(
'' => '',
'none' => esc_html__( 'Straight line without curve', 'visualizer' ),
'function' => esc_html__( 'The angles of the line will be smoothed', 'visualizer' ),
);
}
/**
* Renders general settings block for horizontal axis settings.
*
* @since 1.4.0
*
* @access protected
*/
protected function _renderHorizontalAxisGeneralSettings() {
parent::_renderHorizontalAxisGeneralSettings();
self::_renderColorPickerItem(
esc_html__( 'Axis Text Color', 'visualizer' ),
'hAxis[textStyle]',
isset( $this->hAxis['textStyle'] ) ? $this->hAxis['textStyle'] : null,
'#000'
);
$this->_renderHorizontalAxisFormatField();
}
/**
* Renders general settings block for vertical axis settings.
*
* @since 1.4.0
*
* @access protected
*/
protected function _renderVerticalAxisGeneralSettings() {
parent::_renderVerticalAxisGeneralSettings();
self::_renderColorPickerItem(
esc_html__( 'Axis Text Color', 'visualizer' ),
'vAxis[textStyle]',
isset( $this->vAxis['textStyle'] ) ? $this->vAxis['textStyle'] : null,
'#000'
);
$this->_renderVerticalAxisFormatField();
}
/**
* Renders line settings items.
*
* @since 1.0.0
*
* @access protected
*/
protected function _renderLineSettingsItems() {
echo '
';
echo '
[?]';
echo '
', esc_html__( 'Line Width And Point Size', 'visualizer' ), '';
echo '
';
echo '
';
esc_html_e( 'Data line width and diameter of displayed points in pixels. Use zero to hide all lines or points.', 'visualizer' );
echo '
';
echo '
';
if ( $this->_includeCurveTypes ) {
self::_renderSelectItem(
esc_html__( 'Curve Type', 'visualizer' ),
'curveType',
$this->curveType,
$this->_curveTypes,
esc_html__( 'Determines whether the series has to be presented in the legend or not.', 'visualizer' )
);
}
echo '';
if ( $this->_includeFocusTarget ) {
self::_renderSelectItem(
esc_html__( 'Focus Target', 'visualizer' ),
'focusTarget',
$this->focusTarget,
array(
'' => '',
'datum' => esc_html__( 'Focus on a single data point.', 'visualizer' ),
'category' => esc_html__( 'Focus on a grouping of all data points along the major axis.', 'visualizer' ),
),
esc_html__( 'The type of the entity that receives focus on mouse hover. Also affects which entity is selected by mouse click.', 'visualizer' )
);
}
self::_renderSelectItem(
esc_html__( 'Selection Mode', 'visualizer' ),
'selectionMode',
$this->selectionMode,
array(
'' => '',
'single' => esc_html__( 'Single data point', 'visualizer' ),
'multiple' => esc_html__( 'Multiple data points', 'visualizer' ),
),
esc_html__( 'Determines how many data points a user can select on a chart.', 'visualizer' )
);
self::_renderSelectItem(
esc_html__( 'Group Tooltips By', 'visualizer' ),
'aggregationTarget',
$this->aggregationTarget,
array(
'' => '',
'category' => esc_html__( 'Group selected data by x-value', 'visualizer' ),
'series' => esc_html__( 'Group selected data by series', 'visualizer' ),
'auto' => esc_html__( 'Group selected data by x-value if all selections have the same x-value, and by series otherwise', 'visualizer' ),
'none' => esc_html__( 'Show only one tooltip per selection', 'visualizer' ),
),
esc_html__( 'Determines how multiple data selections are rolled up into tooltips. To make it work, you need to set multiple selection mode and tooltip trigger to display it when a user selects an element.', 'visualizer' )
);
echo '';
self::_renderTextItem(
esc_html__( 'Point Opacity', 'visualizer' ),
'dataOpacity',
$this->dataOpacity,
esc_html__( 'The transparency of data points, with 1.0 being completely opaque and 0.0 fully transparent.', 'visualizer' ),
'1.0'
);
}
/**
* Renders lines settings.
*
* @since 1.0.0
*
* @access protected
*/
protected function _renderLineSettings() {
self::_renderGroupStart( esc_html__( 'Lines Settings', 'visualizer' ) );
self::_renderSectionStart();
$this->_renderLineSettingsItems();
self::_renderSectionEnd();
self::_renderGroupEnd();
}
/**
* Renders concreate series settings.
*
* @since 1.0.0
*
* @access protected
* @param int $index The series index.
*/
protected function _renderSeries( $index ) {
self::_renderSelectItem(
esc_html__( 'Visible In Legend', 'visualizer' ),
'series[' . $index . '][visibleInLegend]',
isset( $this->series[ $index ]['visibleInLegend'] ) ? $this->series[ $index ]['visibleInLegend'] : '',
array(
'' => '',
'0' => esc_html__( 'No', 'visualizer' ),
'1' => esc_html__( 'Yes', 'visualizer' ),
),
esc_html__( 'Determines whether the series has to be presented in the legend or not.', 'visualizer' )
);
echo '';
echo '
[?]';
echo '
', esc_html__( 'Line Width And Point Size', 'visualizer' ), '';
echo '
';
echo '
';
esc_html_e( 'Overrides the global line width and point size values for this series.', 'visualizer' );
echo '
';
echo '
';
$this->_renderFormatField( $index );
if ( $this->_includeCurveTypes ) {
self::_renderSelectItem(
esc_html__( 'Curve Type', 'visualizer' ),
'series[' . $index . '][curveType]',
isset( $this->series[ $index ]['curveType'] ) ? $this->series[ $index ]['curveType'] : '',
$this->_curveTypes,
esc_html__( 'Determines whether the series has to be presented in the legend or not.', 'visualizer' )
);
}
self::_renderColorPickerItem(
esc_html__( 'Color', 'visualizer' ),
'series[' . $index . '][color]',
isset( $this->series[ $index ]['color'] ) ? $this->series[ $index ]['color'] : null,
null
);
$this->_renderRoleField( $index );
}
}