Current File : //var/www/html/blog/wp-content/plugins/royal-elementor-addons/modules/charts/widgets/wpr-charts.php |
<?php
namespace WprAddons\Modules\Charts\Widgets;
use Elementor\Fonts;
use Elementor\Widget_Base;
use Elementor\Controls_Manager;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Text_Shadow;
use Elementor\Group_Control_Background;
use Elementor\Group_Control_Typography;
use Elementor\Core\Kits\Documents\Tabs\Global_Typography;
use Elementor\Core\Kits\Documents\Tabs\Global_Colors;
use Elementor\Repeater;
use Elementor\Group_Control_Image_Size;
use WprAddons\Classes\Utilities;
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
class Wpr_Charts extends Widget_Base {
public function get_name() {
return 'wpr-charts';
}
public function get_title() {
return esc_html__( 'Charts', 'wpr-addons' );
}
public function get_icon() {
return 'wpr-icon eicon-align-end-v';
}
public function get_categories() {
return [ 'wpr-widgets'];
}
public function get_keywords() {
return [ 'royal', 'line charts', 'radar charts', 'doughnut charts', 'pie charts', 'polararea charts', 'polar charts', 'bar charts', 'horizontal charts', 'vertical charts' ];
}
public function has_widget_inner_wrapper(): bool {
return ! \Elementor\Plugin::$instance->experiments->is_feature_active( 'e_optimized_markup' );
}
public function get_script_depends() {
return [ 'wpr-charts' ];
}
public function get_style_depends() {
return ['wpr-loading-animations-css'];
}
public function get_custom_help_url() {
if ( empty(get_option('wpr_wl_plugin_links')) )
// return 'https://royal-elementor-addons.com/contact/?ref=rea-plugin-panel-grid-help-btn';
return 'https://wordpress.org/support/plugin/royal-elementor-addons/';
}
public function add_control_choose_chart_data_source() {
$this->add_control(
'data_source',
[
'label' => __( 'Data Source', 'wpr-addons' ),
'type' => Controls_Manager::SELECT,
'default' => 'custom',
'options' => [
'custom' => __( 'Custom', 'wpr-addons' ),
'pro-csv' => 'CSV (Pro)' . __( ' File', 'wpr-addons' ),
],
'frontend_available' => true,
]
);
}
protected function register_controls() {
$this->start_controls_section(
'section_chart_general',
[
'label' => esc_html__( 'General', 'wpr-addons' ),
'tab' => Controls_Manager::TAB_CONTENT,
]
);
Utilities::wpr_library_buttons( $this, Controls_Manager::RAW_HTML );
$this->add_control_choose_chart_data_source();
Utilities::upgrade_pro_notice( $this, Controls_Manager::RAW_HTML, 'charts', 'data_source', ['pro-csv'] );
$this->add_control(
'csv_source',
[
'label' => __( 'CSV Source', 'wpr-addons' ),
'type' => Controls_Manager::SELECT,
'default' => 'url',
'options' => [
'url' => __( 'Remote URL', 'wpr-addons' ),
'file' => __( ' File', 'wpr-addons' ),
],
'condition' => [
'data_source' => 'csv',
],
'frontend_available' => true,
]
);
$this->add_control(
'data_csv_separator',
[
'label' => __( 'Separator', 'wpr-addons' ),
'type' => Controls_Manager::TEXT,
'default' => ',',
'label_block' => true,
'condition' => [
'data_source' => 'csv',
],
]
);
$this->add_control(
'data_source_csv_url',
[
'label' => __( 'Remote URL', 'wpr-addons' ),
'type' => Controls_Manager::TEXT,
'dynamic' => [
'active' => true,
],
'label_block' => true,
'condition' => [
'data_source' => 'csv',
'csv_source' => 'url',
],
]
);
$this->add_control(
'data_source_csv_file',
[
'label' => __( 'Upload CSV File', 'wpr-addons' ),
'type' => \Elementor\Controls_Manager::MEDIA,
'dynamic' => ['
active' => true,
],
'media_type' => [],
'label_block' => true,
'condition' => [
'data_source' => 'csv',
'csv_source' => 'file',
],
]
);
// chart style
$this->add_control(
'chart_type',
[
'label' => esc_html__('Chart Styles', 'wpr-addons'),
'type' => Controls_Manager::SELECT,
'description' => esc_html__('doughnut, pie and polarArea charts only work with custom data source', 'wpr-addons'),
'default' => 'bar',
'options' => [
'bar' => esc_html__('Bar Vertical', 'wpr-addons'),
'bar_horizontal' => esc_html__('Bar Horizontal', 'wpr-addons'),
'line' => esc_html__('Line', 'wpr-addons'),
'radar' => esc_html__('Radar', 'wpr-addons'),
'doughnut' => esc_html__('Doughnut', 'wpr-addons'),
'pie' => esc_html__('Pie', 'wpr-addons'),
'polarArea' => esc_html__('Polar Area', 'wpr-addons'),
],
'separator' => 'before'
]
);
$this->add_control(
'data_type',
[
'label' => __( 'Data Grid Type', 'wpr-addons' ),
'type' => Controls_Manager::SELECT,
'options' => [
'linear' => __( 'Linear', 'wpr-addons' ),
'logarithmic' => __( 'Logarithmic', 'wpr-addons' ),
],
'default' => 'linear',
'condition' => [
'chart_type' => ['bar', 'bar_horizontal', 'line']
],
'frontend_available' => true,
]
);
$this->add_control(
'column_width_x',
[
'label' => esc_html__( 'Column Width', 'wpr-addons' ),
'type' => Controls_Manager::NUMBER,
'default' => 0.5,
'step' => 0.1,
'min' => 0,
'max' => 1,
'frontend_available' => true,
'separator' => 'before',
'condition' => [
'chart_type' => ['bar', 'bar_horizontal'],
]
]
);
$this->add_control(
'exclude_dataset_on_click',
[
'label' => esc_html__('Exclude Data on Legend Click', 'wpr-addons'),
'type' => Controls_Manager::SWITCHER ,
'default' => 'yes',
'return_value' => 'yes',
'separator' => 'before'
]
);
$this->add_control(
'stacked_bar_chart',
[
'label' => esc_html__('Enable Stacked Chart', 'wpr-addons'),
'type' => Controls_Manager::SWITCHER ,
'default' => 'yes',
'return_value' => 'yes',
'condition' => [
'chart_type' => ['bar', 'bar_horizontal', 'radar', 'doughnut', 'pie']
]
]
);
$this->add_control(
'inner_datalabels',
[
'label' => esc_html__('Show Data Values', 'wpr-addons'),
'type' => Controls_Manager::SWITCHER ,
'default' => 'false',
'return_value' => 'true',
'condition' => [
'chart_type' => ['bar', 'bar_horizontal', 'line', '']
]
]
);
$this->add_control(
'enable_min_max',
[
'label' => esc_html__( 'Min-Max Values', 'wpr-addons' ),
'type' => Controls_Manager::SWITCHER,
'default' => 'no',
'return_value' => 'yes',
'separator' => 'before',
'condition' => [
'chart_type!' => ['doughnut', 'polarArea', 'pie'],
]
]
);
$this->add_control(
'min_value',
[
'label' => esc_html__('Min. Value', 'wpr-addons'),
'type' => Controls_Manager::NUMBER,
'default' => -100,
'condition' => [
'enable_min_max' => 'yes',
]
]
);
$this->add_control(
'max_value',
[
'label' => esc_html__('Max. Value', 'wpr-addons'),
'type' => Controls_Manager::NUMBER,
'default' => 100,
'condition' => [
'enable_min_max' => 'yes',
]
]
);
$this->add_control(
'animations_heading',
[
'label' => esc_html__( 'Animation', 'wpr-addons' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'chart_animation',
[
'label' => esc_html__( 'Animation', 'wpr-addons' ),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
'return_value' => 'yes',
'chart_type' => ['line', 'radar']
]
);
$this->add_control(
'chart_animation_loop',
[
'label' => esc_html__( 'Loop', 'wpr-addons' ),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
'return_value' => 'yes',
'condition' => [
'chart_animation' => 'yes',
'chart_type' => ['line', 'radar']
]
]
);
$this->add_control(
'chart_animation_duration',
[
'label' => esc_html__('Animation Duration', 'wpr-addons'),
'type' => Controls_Manager::NUMBER,
'default' => 1000,
'condition' => [
'chart_animation' => 'yes',
'chart_type' => ['radar', 'line']
]
]
);
$this->add_control(
'animation_transition_type',
[
'label' => esc_html__('Animation Timing', 'wpr-addons'),
'type' => Controls_Manager::SELECT,
'default' => 'linear',
'options' => [
'linear' => 'linear',
'easeInQuad' => 'easeInQuad',
'easeOutQuad' => 'easeOutQuad',
'easeInOutQuad' => 'easeInOutQuad',
'easeInCubic' => 'easeInCubic',
'easeOutCubic' => 'easeOutCubic',
'easeInOutCubic' => 'easeInOutCubic',
'easeInQuart' => 'easeInQuart',
'easeOutQuart' => 'easeOutQuart',
'easeInOutQuart' => 'easeInOutQuart',
'easeInQuint' => 'easeInQuint',
'easeOutQuint' => 'easeOutQuint',
'easeInOutQuint' => 'easeInOutQuint',
'easeInSine' => 'easeInSine',
'easeOutSine' => 'easeOutSine',
'easeInOutSine' => 'easeInOutSine',
'easeInExpo' => 'easeInExpo',
'easeOutExpo' => 'easeOutExpo',
'easeInOutExpo' => 'easeInOutExpo',
'easeInCirc' => 'easeInCirc',
'easeOutCirc' => 'easeOutCirc',
'easeInOutCirc' => 'easeInOutCirc',
'easeInElastic' => 'easeInElastic',
'easeOutElastic' => 'easeOutElastic',
'easeInOutElastic' => 'easeInOutElastic',
'easeInBack' => 'easeInBack',
'easeOutBack' => 'easeOutBack',
'easeInOutBack' => 'easeInOutBack',
'easeInBounce' => 'easeInBounce',
'easeOutBounce' => 'easeOutBounce',
'easeInOutBounce' => 'easeInOutBounce',
],
'condition' => [
'chart_animation' => 'yes',
'chart_type' => ['radar', 'line']
]
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_chart_data',
[
'label' => esc_html__( 'Data', 'wpr-addons' ),
'tab' => Controls_Manager::TAB_CONTENT,
]
);
$this->add_control( //TODO: use this instead of repeater
'charts_labels_data', [
'label' => esc_html__('Data Labels', 'wpr-addons'),
'type' => Controls_Manager::TEXTAREA,
'dynamic' => [
'active' => true,
],
'default' => esc_html__('January, February, March', 'wpr-addons'),
'description' => esc_html__('Enter the comma-separated list of values (Used only with custom data source)', 'wpr-addons'),
'label_block' => true,
'condition' => [
'data_source' => 'custom',
// 'chart_type' => ['bar', 'bar_horizontal', 'line', 'radar']
],
]
);
if ( !defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code() ) {
$this->add_control(
'charts_repeater_labels_data_pro_notice',
[
'type' => Controls_Manager::RAW_HTML,
'raw' => 'More than 3 Data Labels are available<br> in the <strong><a href="https://royal-elementor-addons.com/?ref=rea-plugin-panel-charts-upgrade-pro#purchasepro" target="_blank">Pro version</a></strong>',
// 'raw' => 'More than 4 Slides are available<br> in the <strong><a href="'. admin_url('admin.php?page=wpr-addons-pricing') .'" target="_blank">Pro version</a></strong>',
'content_classes' => 'wpr-pro-notice',
]
);
}
// repeter for data fields
$chart_repeater_labels = new Repeater();
$chart_repeater_labels->add_control(
'chart_data_label', [
'label' => esc_html__('Label', 'wpr-addons'),
'type' => Controls_Manager::TEXT,
'dynamic' => [
'active' => true,
],
'default' => esc_html__('Label #1', 'wpr-addons'),
'label_block' => true,
]
);
$chart_repeater_labels->add_control(
'chart_data_set', [
'label' => esc_html__('Data', 'wpr-addons'),
'type' => Controls_Manager::TEXT,
'dynamic' => [
'active' => true,
],
'default' => '10,23,15',
'label_block' => true,
'description' => esc_html__("Only works with custom charts. Enter comma separated data values (Shouldn't Exceed number of values provided in Data Labels option).", 'wpr-addons'),
]
);
// start tabs section
$chart_repeater_labels->start_controls_tabs(
'chart_data_bar_background_tab'
);
// start normal sections
$chart_repeater_labels->start_controls_tab(
'chart_data_bar_background_normal',
[
'label' => esc_html__('Normal', 'wpr-addons'),
]
);
$chart_repeater_labels->add_control(
'chart_data_background_color', [
'label' => esc_html__('Background Color', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
'default' => '#605BE5',
]
);
$chart_repeater_labels->add_control(
'chart_data_border_color', [
'label' => esc_html__('Border Color', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
'default' => '#605BE5',
]
);
$chart_repeater_labels->end_controls_tab();
// end normal sections
// start hover sections
$chart_repeater_labels->start_controls_tab(
'chart_data_bar_background_hover',
[
'label' => esc_html__('Hover', 'wpr-addons'),
]
);
$chart_repeater_labels->add_control(
'chart_data_background_color_hover', [
'label' => esc_html__('Background Color', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
'default' => '#7A7A7ACC'
]
);
$chart_repeater_labels->add_control(
'chart_data_border_color_hover', [
'label' => esc_html__('Border Color', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
'default' => '#7A7A7ACC',
]
);
$chart_repeater_labels->end_controls_tab();
// end hover sections
$chart_repeater_labels->end_controls_tabs();
// end tabs section
$chart_repeater_labels->add_control(
'chart_data_border_width', [
'label' => esc_html__('Border Width', 'wpr-addons'),
'type' => Controls_Manager::NUMBER,
'default' => '1',
]
);
$this->add_control(
'charts_data_set',
[
'label' => esc_html__('Set Data', 'wpr-addons'),
'type' => Controls_Manager::REPEATER,
'default' => [
[
'chart_data_label' => esc_html__('Laptops', 'wpr-addons'),
'chart_data_set' => '13,20,15',
'chart_data_background_color' => '#605BE5CC',
'chart_data_border_color' => '#605BE5CC',
'chart_data_border_width' => 1,
],
[
'chart_data_label' => esc_html__('Phones', 'wpr-addons'),
'chart_data_set' => '20,10,33',
'chart_data_background_color' => '#E5605BCC',
'chart_data_border_color' => '#E5605BCC',
'chart_data_border_width' => 1,
],
[
'chart_data_label' => esc_html__('Other', 'wpr-addons'),
'chart_data_set' => '10,3,23',
'chart_data_background_color' => '#5BE560CC',
'chart_data_border_color' => '#5BE560CC',
'chart_data_border_width' => 1,
],
],
'fields' => $chart_repeater_labels->get_controls(),
'title_field' => '{{{ chart_data_label }}}',
// 'condition' => ['chart_style' => ['bar', 'bar_horizontal', 'horizontalBar', 'line', 'radar']],
]
);
if ( !defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code() ) {
$this->add_control(
'charts_repeater_pro_notice',
[
'type' => Controls_Manager::RAW_HTML,
'raw' => 'More than 3 Items are available<br> in the <strong><a href="https://royal-elementor-addons.com/?ref=rea-plugin-panel-charts-upgrade-pro#purchasepro" target="_blank">Pro version</a></strong>',
// 'raw' => 'More than 4 Slides are available<br> in the <strong><a href="'. admin_url('admin.php?page=wpr-addons-pricing') .'" target="_blank">Pro version</a></strong>',
'content_classes' => 'wpr-pro-notice',
]
);
}
$this->end_controls_section();
$this->start_controls_section(
'section_chart_axis_r',
[
'label' => esc_html__( 'Axis', 'wpr-addons' ),
'tab' => Controls_Manager::TAB_CONTENT,
'condition' => [
'chart_type' => ['radar', 'polarArea']
],
]
);
$this->add_control(
'r_axis_conditions',
[
'label' => esc_html__( 'Axis', 'wpr-addons' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before'
]
);
$this->add_control(
'display_r_axis',
[
'label' => esc_html__('Grid Lines', 'wpr-addons'),
'type' => Controls_Manager::SWITCHER ,
'default' => 'true',
'return_value' => 'true'
]
);
$this->add_control(
'grid_line_width_r', [
'label' => esc_html__('Grid Line Width', 'wpr-addons'),
'type' => Controls_Manager::NUMBER,
'default' => '1',
'step' => 0.1,
'condition' => [
'display_r_axis' => 'true'
]
]
);
$this->add_control(
'display_r_ticks',
[
'label' => esc_html__('Ticks (Labels)', 'wpr-addons'),
'type' => Controls_Manager::SWITCHER ,
'default' => 'true',
'return_value' => 'true'
]
);
$this->add_control(
'r_step_size',
[
'label' => __( 'Step Size', 'wpr-addons' ),
'type' => Controls_Manager::NUMBER,
'min' => 0,
'max' => 360,
'default' => 0,
'frontend_available' => true,
'condition' => [
'display_r_ticks' => 'true'
]
]
);
$this->add_control(
'border_dash_length_r', [
'label' => esc_html__('Border Dash length', 'wpr-addons'),
'type' => Controls_Manager::NUMBER,
'default' => '1',
'separator' => 'before',
]
);
$this->add_control(
'border_dash_spacing_r', [
'label' => esc_html__('Border Dash spacing', 'wpr-addons'),
'type' => Controls_Manager::NUMBER,
'default' => '1'
]
);
$this->add_control(
'border_dash_offset_r', [
'label' => esc_html__('Border Dash offset', 'wpr-addons'),
'type' => Controls_Manager::NUMBER,
'default' => '1'
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_chart_axis',
[
'label' => esc_html__( 'Axis', 'wpr-addons' ),
'tab' => Controls_Manager::TAB_CONTENT,
'condition' => [
'chart_type' => ['bar', 'bar_horizontal', 'line']
],
]
);
$this->add_control(
'x_axis_conditions',
[
'label' => esc_html__( 'X-Axis', 'wpr-addons' ),
'type' => Controls_Manager::HEADING,
]
);
$this->add_control(
'display_x_axis',
[
'label' => esc_html__('Grid Lines', 'wpr-addons'),
'type' => Controls_Manager::SWITCHER ,
'default' => 'true',
'return_value' => 'true',
]
);
$this->add_control(
'grid_line_width_x', [
'label' => esc_html__('Grid Line Width', 'wpr-addons'),
'type' => Controls_Manager::NUMBER,
'default' => '1',
'step' => 0.1,
'condition' => [
'display_x_axis' => 'true'
]
]
);
$this->add_control(
'display_x_ticks',
[
'label' => esc_html__('Ticks (Labels)', 'wpr-addons'),
'type' => Controls_Manager::SWITCHER ,
'default' => 'true',
'return_value' => 'true'
]
);
$this->add_control(
'x_step_size',
[
'label' => __( 'Step Size', 'wpr-addons' ),
'type' => Controls_Manager::NUMBER,
'min' => 0,
'max' => 360,
'default' => 0,
'frontend_available' => true,
'condition' => [
'display_x_ticks' => 'true'
]
]
);
$this->add_control(
'display_x_axis_title',
[
'label' => esc_html__('Show Title', 'wpr-addons'),
'type' => Controls_Manager::SWITCHER ,
'default' => 'true',
'return_value' => 'true'
]
);
$this->add_control(
'x_axis_title',
[
'label' => esc_html__( 'Title', 'wpr-addons' ),
'type' => Controls_Manager::TEXT,
'dynamic' => [
'active' => true,
],
'placeholder' => esc_html__( 'X-Axis', 'wpr-addons' ),
'default' => esc_html__('X-Axis', 'wpr-addons'),
'condition' => [
'display_x_axis_title' => 'true'
]
]
);
$this->add_control(
'labels_rotation_x_axis',
[
'label' => __( 'Ticks (Labels) Rotation', 'wpr-addons' ),
'type' => Controls_Manager::NUMBER,
'min' => 0,
'max' => 360,
'default' => 0,
'frontend_available' => true
]
);
$this->add_control(
'y_axis_conditions',
[
'label' => esc_html__( 'Y-Axis', 'wpr-addons' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before'
]
);
$this->add_control(
'display_y_axis',
[
'label' => esc_html__('Grid Lines', 'wpr-addons'),
'type' => Controls_Manager::SWITCHER ,
'default' => 'true',
'return_value' => 'true'
]
);
$this->add_control(
'grid_line_width_y', [
'label' => esc_html__('Grid Line Width', 'wpr-addons'),
'type' => Controls_Manager::NUMBER,
'default' => '1',
'step' => 0.1,
'condition' => [
'display_y_axis' => 'true'
]
]
);
$this->add_control(
'display_y_ticks',
[
'label' => esc_html__('Ticks (Labels)', 'wpr-addons'),
'type' => Controls_Manager::SWITCHER ,
'default' => 'true',
'return_value' => 'true'
]
);
$this->add_control(
'y_step_size',
[
'label' => __( 'Step Size', 'wpr-addons' ),
'type' => Controls_Manager::NUMBER,
'min' => 0,
'max' => 360,
'default' => 0,
'frontend_available' => true,
'condition' => [
'display_y_ticks' => 'true'
]
]
);
$this->add_control(
'display_y_axis_title',
[
'label' => esc_html__('Show Title', 'wpr-addons'),
'type' => Controls_Manager::SWITCHER ,
'default' => 'true',
'return_value' => 'true'
]
);
$this->add_control(
'y_axis_title',
[
'label' => esc_html__( 'Title', 'wpr-addons' ),
'type' => Controls_Manager::TEXT,
'dynamic' => [
'active' => true,
],
'placeholder' => esc_html__( 'Y-Axis', 'wpr-addons' ),
'default' => esc_html__('Y-Axis', 'wpr-addons'),
'condition' => [
'display_y_axis_title' => 'true'
]
]
);
$this->add_control(
'labels_rotation_y_axis',
[
'label' => __( 'Ticks (Labels) Rotation', 'wpr-addons' ),
'type' => Controls_Manager::NUMBER,
'min' => 0,
'max' => 360,
'default' => 0,
'frontend_available' => true
]
);
$this->add_control(
'reverse_x',
[
'label' => esc_html__( 'Reverse Charts', 'wpr-addons' ),
'type' => Controls_Manager::SWITCHER,
'default' => 'no',
'return_value' => 'yes',
'separator' => 'before',
'condition' => [
'show_chart_legend' => 'yes',
'chart_type' => 'bar_horizontal'
]
]
);
$this->add_control(
'reverse_y',
[
'label' => esc_html__( 'Reverse Charts', 'wpr-addons' ),
'type' => Controls_Manager::SWITCHER,
'default' => 'no',
'return_value' => 'yes',
'separator' => 'before',
'condition' => [
'show_chart_legend' => 'yes',
'chart_type' => ['bar', 'line']
]
]
);
$this->add_control(
'border_dash_length', [
'label' => esc_html__('Border Dash length', 'wpr-addons'),
'type' => Controls_Manager::NUMBER,
'default' => '1',
'separator' => 'before',
// 'step' => 0.1,
'conditions' => [
'relation' => 'or',
'terms' => [
[
'name' => 'display_x_axis',
'operator' => '==',
'value' => 'true'
],
[
'name' => 'display_y_axis',
'operator' => '==',
'value' => 'true'
]
]
]
]
);
$this->add_control(
'border_dash_spacing', [
'label' => esc_html__('Border Dash spacing', 'wpr-addons'),
'type' => Controls_Manager::NUMBER,
'default' => '1',
// 'step' => 0.1,
'conditions' => [
'relation' => 'or',
'terms' => [
[
'name' => 'display_x_axis',
'operator' => '==',
'value' => 'true'
],
[
'name' => 'display_y_axis',
'operator' => '==',
'value' => 'true'
]
]
]
]
);
$this->add_control(
'border_dash_offset', [
'label' => esc_html__('Border Dash offset', 'wpr-addons'),
'type' => Controls_Manager::NUMBER,
'default' => '1',
// 'step' => 0.1,
'conditions' => [
'relation' => 'or',
'terms' => [
[
'name' => 'display_x_axis',
'operator' => '==',
'value' => 'true'
],
[
'name' => 'display_y_axis',
'operator' => '==',
'value' => 'true'
]
]
]
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_chart_title',
[
'label' => esc_html__( 'Title', 'wpr-addons' ),
'tab' => Controls_Manager::TAB_CONTENT,
]
);
$this->add_control(
'show_chart_title',
[
'label' => esc_html__( 'Show Title', 'wpr-addons' ),
'type' => Controls_Manager::SWITCHER,
'return_value' => 'yes'
]
);
$this->add_control(
'chart_title',
[
'label' => esc_html__( 'Title', 'wpr-addons' ),
'type' => Controls_Manager::TEXT,
'dynamic' => [
'active' => true,
],
'placeholder' => esc_html__( 'To Be Applied', 'wpr-addons' ),
'default' => esc_html__('To Be Applied', 'wpr-addons'),
'condition' => [
'show_chart_title' => 'yes',
],
]
);
$this->add_control(
'chart_title_position',
[
'label' => esc_html__( 'Position', 'wpr-addons' ),
'type' => Controls_Manager::SELECT,
'default' => 'top',
'label_block' => false,
'options' => [
'top' => esc_html__( 'Top', 'wpr-addons' ),
'right' => esc_html__( 'Right', 'wpr-addons' ),
'bottom' => esc_html__( 'Bottom', 'wpr-addons' ),
'left' => esc_html__( 'Left', 'wpr-addons' ),
// 'chartArea' => esc_html__( 'chartArea', 'wpr-addons' ),
],
'condition' => [
'show_chart_title' => 'yes',
]
]
);
$this->add_control(
'chart_title_align',
[
'label' => esc_html__( 'Align', 'wpr-addons' ),
'type' => Controls_Manager::SELECT,
'default' => 'center',
'label_block' => false,
'options' => [
'start' => esc_html__( 'Start', 'wpr-addons' ),
'center' => esc_html__( 'Center', 'wpr-addons' ),
'end' => esc_html__( 'End', 'wpr-addons' ),
],
'condition' => [
'show_chart_title' => 'yes',
]
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_chart_legend',
[
'label' => esc_html__( 'Legends', 'wpr-addons' ),
'tab' => Controls_Manager::TAB_CONTENT,
]
);
$this->add_control(
'show_chart_legend',
[
'label' => esc_html__( 'Show Legends', 'wpr-addons' ),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
'return_value' => 'yes',
]
);
$this->add_control(
'reverse_legend',
[
'label' => esc_html__( 'Reverse', 'wpr-addons' ),
'type' => Controls_Manager::SWITCHER,
'default' => 'no',
'return_value' => 'yes',
'condition' => [
'show_chart_legend' => 'yes',
]
]
);
$this->add_control(
'charts_legend_shape',
[
'label' => esc_html__( 'Shape', 'wpr-addons' ),
'type' => Controls_Manager::SELECT,
'default' => 'rectangle',
'label_block' => false,
'render_type' => 'template',
'options' => [
'rectangle' => esc_html__( 'Rectangle', 'wpr-addons' ),
'point' => esc_html__( 'Point', 'wpr-addons' ),
],
'condition' => [
'show_chart_legend' => 'yes',
]
]
);
$this->add_control(
'charts_legend_position',
[
'label' => esc_html__( 'Position', 'wpr-addons' ),
'type' => Controls_Manager::SELECT,
'default' => 'top',
'label_block' => false,
'options' => [
'top' => esc_html__( 'Top', 'wpr-addons' ),
'right' => esc_html__( 'Right', 'wpr-addons' ),
'bottom' => esc_html__( 'Bottom', 'wpr-addons' ),
'left' => esc_html__( 'Left', 'wpr-addons' ),
'chartArea' => esc_html__( 'chartArea', 'wpr-addons' ),
],
'condition' => [
'show_chart_legend' => 'yes',
]
]
);
$this->add_control(
'charts_legend_align',
[
'label' => esc_html__( 'Align', 'wpr-addons' ),
'type' => Controls_Manager::SELECT,
'default' => 'center',
'label_block' => false,
'options' => [
'start' => esc_html__( 'Start', 'wpr-addons' ),
'center' => esc_html__( 'Center', 'wpr-addons' ),
'end' => esc_html__( 'End', 'wpr-addons' ),
],
'condition' => [
'show_chart_legend' => 'yes',
]
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_chart_tooltip',
[
'label' => esc_html__( 'Tooltip', 'wpr-addons' ),
'tab' => Controls_Manager::TAB_CONTENT,
]
);
$this->add_control(
'show_chart_tooltip',
[
'label' => esc_html__( 'Show Tooltip', 'wpr-addons' ),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
'return_value' => 'yes'
]
);
$this->add_control(
'tooltips_percent',
[
'label' => __( 'Convert Values to Percents', 'wpr-addons' ),
'type' => Controls_Manager::SWITCHER,
'return_value' => 'true',
'default' => 'true',
'frontend_available' => true,
'condition' => [
'show_chart_tooltip' => 'yes'
]
]
);
$this->add_control(
'trigger_tooltip_on',
[
'label' => esc_html__('Show Tooltip On', 'wpr-addons'),
'type' => Controls_Manager::SELECT,
'default' => 'mousemove',
'options' => [
'mousemove' => esc_html__('Hover', 'wpr-addons'),
'click' => esc_html__('Click', 'wpr-addons'),
],
'condition' => [
'show_chart_tooltip' => 'yes'
]
]
);
$this->add_control(
'chart_interaction_mode',
[
'label' => esc_html__('Interaction Mode', 'wpr-addons'),
'type' => Controls_Manager::SELECT,
'default' => 'point',
'options' => [
// 'nearest' => esc_html__('Nearest', 'wpr-addons'),
'point' => esc_html__('Point', 'wpr-addons'),
'index' => esc_html__('Index', 'wpr-addons'),
'dataset' => esc_html__('Dataset', 'wpr-addons'),
],
'condition' => [
'show_chart_tooltip' => 'yes'
]
]
);
$this->add_control(
'chart_tooltip_position',
[
'label' => esc_html__('Position', 'wpr-addons'),
'type' => Controls_Manager::SELECT,
'default' => 'nearest',
'options' => [
'nearest' => esc_html__('Nearest', 'wpr-addons'),
'average' => esc_html__('Average', 'wpr-addons'),
],
'condition' => [
'show_chart_tooltip' => 'yes'
]
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_chart_lines',
[
'label' => esc_html__( 'Lines', 'wpr-addons' ),
'tab' => Controls_Manager::TAB_CONTENT,
'condition' => [
'chart_type' => ['line', 'radar'],
]
]
);
$this->add_control(
'show_lines',
[
'label' => esc_html__( 'Show Lines', 'wpr-addons' ),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
'return_value' => 'yes',
'separator' => 'before',
]
);
$this->add_control(
'chart_type_line_fill',
[
'label' => esc_html__( 'Show Background Fill', 'wpr-addons' ),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
'return_value' => 'yes',
'condition' => [
'chart_type!' => ['bar', 'bar_horizontal'],
]
]
);
$this->add_control(
'line_dots',
[
'label' => esc_html__( 'Show Dots', 'wpr-addons' ),
'type' => Controls_Manager::SWITCHER,
'default' => 'yes',
'return_value' => 'yes',
'condition' => [
'chart_type!' => ['bar', 'bar_horizontal'],
]
]
);
$this->add_responsive_control(
'line_dots_radius',
[
'label' => esc_html__( 'Dots Size', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'devices' => ['desktop', 'mobile'],
'exclude' => ['tablet'],
'range' => [
'px' => [
'min' => 0,
'max' => 50,
],
],
'size_units' => [ 'px' ],
'default' => [
'unit' => 'px',
'size' => 10,
],
'mobile_default' => [
'unit' => 'px',
'size' => 5
],
'condition' => [
'chart_type!' => ['bar', 'bar_horizontal'],
'line_dots' => 'yes',
]
]
);
$this->end_controls_section();
$this->start_controls_section(
'chart_section_style_res',
[
'label' => esc_html__( 'Responsive', 'wpr-addons' ),
'tab' => Controls_Manager::TAB_CONTENT,
]
);
/**
* Control: Enable/Disable
*/
$this->add_control(
'responsive_chart',
[
'label' => esc_html__( 'Responsive Layout', 'wpr-addons' ),
'description' => esc_html__( 'Enables scrollbar on tablet and mobile screens', 'wpr-addons' ),
'default' => 'yes',
'type' => Controls_Manager::SWITCHER,
'selectors' => [
'{{WRAPPER}} .wpr-charts-container' => 'overflow: auto;',
'{{WRAPPER}} .wpr-charts-wrapper' => 'position: relative; margin: 0 auto;',
],
]
);
/**
* Control: Width
*/
$this->add_responsive_control(
'chart_res_width',
[
'label' => esc_html__( 'Min Width (px)', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 0,
'max' => 1600
]
],
'default' => [
'size' => 800,
],
'selectors' => [
'{{WRAPPER}} .wpr-charts-wrapper' => 'min-width: {{SIZE}}px;',
],
'separator' => 'before',
'condition' => [
'responsive_chart' => 'yes',
],
]
);
/**
* Control: Height
*/
$this->add_responsive_control(
'chart_res_height',
[
'label' => esc_html__( 'Min Height (px)', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 0,
'max' => 1600
]
],
'default' => [
'size' => 400,
],
'selectors' => [
'{{WRAPPER}} .wpr-charts-wrapper' => 'min-height: {{SIZE}}px;',
],
'condition' => [
'responsive_chart' => 'yes',
],
]
);
$this->end_controls_section();
// Section: Request New Feature
Utilities::wpr_add_section_request_feature( $this, Controls_Manager::RAW_HTML, '' );
// Section: Pro Features
Utilities::pro_features_list_section( $this, '', Controls_Manager::RAW_HTML, 'charts', [
'Upload CSV File',
'Import CSV File from URL',
'Import published Google Sheets',
'Add Unlimited Data Labels',
'Add Unlimited Chart Items'
] );
$this->start_controls_section(
'section_datalabels_styles',
[
'label' => esc_html__( 'Data Values', 'wpr-addons' ),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => [
'inner_datalabels' => 'true'
]
]
);
$this->add_control(
'inner_datalabels_color', [
'label' => esc_html__('Color', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
'default' => '#FFF',
]
);
// $this->add_control(
// 'inner_datalabels_bg_color', [
// 'label' => esc_html__('Background Color', 'wpr-addons'),
// 'type' => Controls_Manager::COLOR,
// 'default' => '',
// ]
// );
$this->add_control(
'inner_datalabels_font_family',
[
'label' => esc_html__( 'Font Family', 'wpr-addons' ),
'type' => \Elementor\Controls_Manager::FONT,
'description' => esc_html__('Use only the fonts located under System options group', 'wpr-addons'),
'default' => 'Arial',
]
);
$this->add_control(
'inner_datalabels_font_style',
[
'label' => esc_html__('Font Style', 'wpr-addons'),
'type' => Controls_Manager::SELECT,
'default' => 'normal',
'options' => [
'normal' => 'Normal',
'italic' => 'Italic',
'oblique' => 'Oblique',
],
]
);
$this->add_control(
'inner_datalabels_font_weight',
[
'label' => __( 'Font Weight ', 'wpr-addons' ),
'type' => Controls_Manager::NUMBER,
'min' => 0,
'default' => 600,
'frontend_available' => true
]
);
$this->add_control(
'inner_datalabels_font_size',
[
'label' => esc_html__( 'Font Size', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px' ],
'range' => [
'px' => [
'min' => 10,
'max' => 100,
],
],
'default' => [
'unit' => 'px',
'size' => 14,
]
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_styles_chart_axis_r',
[
'label' => esc_html__( 'Axis', 'wpr-addons' ),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => [
'chart_type' => ['radar', 'polarArea']
],
]
);
$this->add_control(
'r_axis_angle_lines_heading',
[
'label' => esc_html__( 'Angle Lines', 'wpr-addons' ),
'type' => Controls_Manager::HEADING,
]
);
$this->add_control(
'angle_lines_color', [
'label' => esc_html__('Color', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
'default' => '#E7E7E7'
]
);
$this->add_control(
'r_axis_grid_lines_heading',
[
'label' => esc_html__( 'Grid Lines', 'wpr-addons' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'axis_grid_line_color_r', [
'label' => esc_html__('Color', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
'default' => '#E7E7E7'
]
);
$this->add_control(
'axis_labels_heading',
[
'label' => esc_html__( 'Axis Labels', 'wpr-addons' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'axis_labels_color', [
'label' => esc_html__('Color', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
'default' => '#222222'
]
);
$this->add_control(
'axis_labels_bg_color', [
'label' => esc_html__('Background Color', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
'default' => '#B2B2B200'
]
);
$this->add_control(
'axis_labels_padding',
[
'label' => esc_html__( 'Padding', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px' ],
'range' => [
'px' => [
'min' => 0,
'max' => 100,
],
],
'default' => [
'unit' => 'px',
'size' => 5,
],
]
);
$this->add_control(
'chart_point_labels_heading',
[
'label' => esc_html__( 'Ticks', 'wpr-addons' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before'
]
);
$this->add_control(
'chart_point_labels_color_r', [
'label' => esc_html__('Color', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
'default' => '#B2B2B2'
]
);
$this->add_control(
'point_labels_font_family_r',
[
'label' => esc_html__( 'Font Family', 'wpr-addons' ),
'type' => \Elementor\Controls_Manager::FONT,
'description' => esc_html__('Use only the fonts located under System options group', 'wpr-addons'),
'default' => 'Arial',
]
);
$this->add_control(
'point_labels_font_style_r',
[
'label' => esc_html__('Font Style', 'wpr-addons'),
'type' => Controls_Manager::SELECT,
'default' => 'normal',
'options' => [
'normal' => 'Normal',
'italic' => 'Italic',
'oblique' => 'Oblique',
],
]
);
$this->add_control(
'point_labels_font_weight_r',
[
'label' => __( 'Font Weight ', 'wpr-addons' ),
'type' => Controls_Manager::NUMBER,
'min' => 0,
'default' => 600,
'frontend_available' => true,
]
);
$this->add_control(
'point_labels_font_size_r',
[
'label' => esc_html__( 'Font Size', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px' ],
'range' => [
'px' => [
'min' => 10,
'max' => 100,
],
],
'default' => [
'unit' => 'px',
'size' => 14,
],
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_chart_axis_styles',
[
'label' => esc_html__( 'Axis', 'wpr-addons' ),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => [
'chart_type' => ['bar', 'bar_horizontal', 'line']
],
]
);
$this->add_control(
'x_axis_grid_lines_heading',
[
'label' => esc_html__( 'Grid Lines (X)', 'wpr-addons' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'axis_grid_line_color_x', [
'label' => esc_html__('Color (X)', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
'default' => '#888888'
]
);
$this->add_control(
'y_axis_grid_lines_heading',
[
'label' => esc_html__( 'Grid Lines (Y)', 'wpr-addons' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'axis_grid_line_color_y', [
'label' => esc_html__('Color (Y)', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
'default' => '#888888'
]
);
$this->add_control(
'x_axis_title_styles_heading',
[
'label' => esc_html__( 'X-Title', 'wpr-addons' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'axis_title_color_x', [
'label' => esc_html__('Color (X)', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
'default' => '#C0C0C0'
]
);
$this->add_control(
'axis_title_font_family_x',
[
'label' => esc_html__( 'Font Family', 'wpr-addons' ),
'type' => \Elementor\Controls_Manager::FONT,
'description' => esc_html__('Use only the fonts located under System options group', 'wpr-addons'),
'default' => 'Arial',
]
);
$this->add_control(
'axis_title_font_style_x',
[
'label' => esc_html__('Font Style', 'wpr-addons'),
'type' => Controls_Manager::SELECT,
'default' => 'normal',
'options' => [
'normal' => 'Normal',
'italic' => 'Italic',
'oblique' => 'Oblique',
],
]
);
$this->add_control(
'axis_title_font_weight_x',
[
'label' => __( 'Font Weight ', 'wpr-addons' ),
'type' => Controls_Manager::NUMBER,
'min' => 0,
'default' => 600,
'frontend_available' => true,
]
);
$this->add_control(
'axis_title_font_size_x',
[
'label' => esc_html__( 'Font Size', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px' ],
'range' => [
'px' => [
'min' => 10,
'max' => 100,
],
],
'default' => [
'unit' => 'px',
'size' => 14,
],
]
);
$this->add_control(
'y_axis_title_styles_heading',
[
'label' => esc_html__( 'Y-Title', 'wpr-addons' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'axis_title_color_y', [
'label' => esc_html__('Color (Y)', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
'default' => '#C0C0C0'
]
);
$this->add_control(
'axis_title_font_family_y',
[
'label' => esc_html__( 'Font Family', 'wpr-addons' ),
'type' => \Elementor\Controls_Manager::FONT,
'description' => esc_html__('Use only the fonts located under System options group', 'wpr-addons'),
'default' => 'Arial',
]
);
$this->add_control(
'axis_title_font_style_y',
[
'label' => esc_html__('Font Style', 'wpr-addons'),
'type' => Controls_Manager::SELECT,
'default' => 'normal',
'options' => [
'normal' => 'Normal',
'italic' => 'Italic',
'oblique' => 'Oblique',
],
]
);
$this->add_control(
'axis_title_font_weight_y',
[
'label' => __( 'Font Weight ', 'wpr-addons' ),
'type' => Controls_Manager::NUMBER,
'min' => 0,
'default' => 600,
'frontend_available' => true,
]
);
$this->add_control(
'axis_title_font_size_y',
[
'label' => esc_html__( 'Font Size', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px' ],
'range' => [
'px' => [
'min' => 10,
'max' => 100,
],
],
'default' => [
'unit' => 'px',
'size' => 14,
],
]
);
$this->add_control(
'x_ticks_styles_heading',
[
'label' => esc_html__( 'X-Ticks', 'wpr-addons' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'chart_ticks_color_x', [
'label' => esc_html__('Ticks Color (X)', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
]
);
$this->add_control(
'ticks_font_family_x',
[
'label' => esc_html__( 'Font Family', 'wpr-addons' ),
'type' => \Elementor\Controls_Manager::FONT,
'description' => esc_html__('Use only the fonts located under System options group', 'wpr-addons'),
'default' => 'Arial',
]
);
$this->add_control(
'ticks_font_style_x',
[
'label' => esc_html__('Font Style', 'wpr-addons'),
'type' => Controls_Manager::SELECT,
'default' => 'normal',
'options' => [
'normal' => 'Normal',
'italic' => 'Italic',
'oblique' => 'Oblique',
],
]
);
$this->add_control(
'ticks_font_weight_x',
[
'label' => __( 'Font Weight ', 'wpr-addons' ),
'type' => Controls_Manager::NUMBER,
'min' => 0,
'default' => 600,
'frontend_available' => true,
]
);
$this->add_control(
'ticks_font_size_x',
[
'label' => esc_html__( 'Font Size', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px' ],
'range' => [
'px' => [
'min' => 10,
'max' => 100,
],
],
'default' => [
'unit' => 'px',
'size' => 17,
],
]
);
$this->add_control(
'ticks_padding_x',
[
'label' => esc_html__( 'Distance', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 0,
'max' => 50,
],
],
'size_units' => [ 'px' ],
'default' => [
'unit' => 'px',
'size' => 10,
]
]
);
$this->add_control(
'y_ticks_styles_heading',
[
'label' => esc_html__( 'Y-Ticks', 'wpr-addons' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'chart_ticks_color_y', [
'label' => esc_html__('Ticks Color (Y)', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
]
);
$this->add_control(
'ticks_font_family_y',
[
'label' => esc_html__( 'Font Family', 'wpr-addons' ),
'type' => \Elementor\Controls_Manager::FONT,
'description' => esc_html__('Use only the fonts located under System options group', 'wpr-addons'),
'default' => 'Arial',
]
);
$this->add_control(
'ticks_font_style_y',
[
'label' => esc_html__('Font Style', 'wpr-addons'),
'type' => Controls_Manager::SELECT,
'default' => 'normal',
'options' => [
'normal' => 'Normal',
'italic' => 'Italic',
'oblique' => 'Oblique',
],
]
);
$this->add_control(
'ticks_font_weight_y',
[
'label' => __( 'Font Weight ', 'wpr-addons' ),
'type' => Controls_Manager::NUMBER,
'min' => 0,
'default' => 600,
'frontend_available' => true,
]
);
$this->add_control(
'ticks_font_size_y',
[
'label' => esc_html__( 'Font Size', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px' ],
'range' => [
'px' => [
'min' => 10,
'max' => 100,
],
],
'default' => [
'unit' => 'px',
'size' => 14,
],
]
);
$this->add_control(
'ticks_padding_y',
[
'label' => esc_html__( 'Distance', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 0,
'max' => 50,
],
],
'size_units' => [ 'px' ],
'default' => [
'unit' => 'px',
'size' => 10,
]
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_chart_title_styles',
[
'label' => esc_html__( 'Title', 'wpr-addons' ),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => [
'show_chart_title' => 'yes'
]
]
);
$this->add_control(
'chart_title_color', [
'label' => esc_html__('Color', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
]
);
$this->add_control(
'title_font_family',
[
'label' => esc_html__( 'Font Family', 'wpr-addons' ),
'type' => \Elementor\Controls_Manager::FONT,
'description' => esc_html__('Use only the fonts located under System options group', 'wpr-addons'),
'default' => 'Arial',
]
);
$this->add_control(
'title_font_style',
[
'label' => esc_html__('Font Style', 'wpr-addons'),
'type' => Controls_Manager::SELECT,
'default' => 'normal',
'options' => [
'normal' => 'Normal',
'italic' => 'Italic',
'oblique' => 'Oblique',
],
]
);
$this->add_control(
'title_font_weight',
[
'label' => __( 'Font Weight ', 'wpr-addons' ),
'type' => Controls_Manager::NUMBER,
'min' => 0,
'default' => 600,
'frontend_available' => true,
]
);
$this->add_control(
'title_font_size',
[
'label' => esc_html__( 'Font Size', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px' ],
'range' => [
'px' => [
'min' => 10,
'max' => 100,
],
],
'default' => [
'unit' => 'px',
'size' => 14,
],
]
);
$this->add_control(
'chart_title_padding',
[
'label' => esc_html__( 'Padding', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 0,
'max' => 50,
],
],
'size_units' => [ 'px' ],
'default' => [
'unit' => 'px',
'size' => 10,
],
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_chart_legend_styles',
[
'label' => esc_html__( 'Legend', 'wpr-addons' ),
'tab' => Controls_Manager::TAB_STYLE,
]
);
$this->add_control(
'chart_legend_text_color', [
'label' => esc_html__('Color', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
'default' => '#222222'
]
);
$this->add_control(
'legend_font_family',
[
'label' => esc_html__( 'Font Family', 'wpr-addons' ),
'type' => \Elementor\Controls_Manager::FONT,
'description' => esc_html__('Use only the fonts located under System options group', 'wpr-addons'),
'default' => 'Arial',
]
);
$this->add_control(
'legend_font_style',
[
'label' => esc_html__('Font Style', 'wpr-addons'),
'type' => Controls_Manager::SELECT,
'default' => 'normal',
'options' => [
'normal' => 'Normal',
'italic' => 'Italic',
'oblique' => 'Oblique',
],
]
);
$this->add_control(
'legend_font_weight',
[
'label' => __( 'Font Weight ', 'wpr-addons' ),
'type' => Controls_Manager::NUMBER,
'min' => 0,
'default' => 600,
'frontend_available' => true,
]
);
$this->add_control(
'legend_font_size',
[
'label' => esc_html__( 'Font Size', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px' ],
'range' => [
'px' => [
'min' => 10,
'max' => 100,
],
],
'default' => [
'unit' => 'px',
'size' => 14,
],
]
);
$this->add_control(
'legend_box_width',
[
'label' => esc_html__( 'Box Size', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 0,
'max' => 200,
],
],
'size_units' => [ 'px' ],
'default' => [
'unit' => 'px',
'size' => 40,
]
]
);
$this->add_control(
'chart_legend_padding',
[
'label' => esc_html__( 'Gutter', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 0,
'max' => 50,
],
],
'size_units' => [ 'px' ],
'default' => [
'unit' => 'px',
'size' => 10,
],
]
);
$this->end_controls_section();
$this->start_controls_section(
'section_chart_tooltip_styles',
[
'label' => esc_html__( 'Tooltip', 'wpr-addons' ),
'tab' => Controls_Manager::TAB_STYLE,
'condition' => [
'show_chart_tooltip' => 'yes'
]
]
);
$this->add_control(
'chart_tooltip_bg_color', [
'label' => esc_html__('Background Color', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
]
);
$this->add_control(
'tooltip_padding',
[
'label' => esc_html__( 'Padding', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px' ],
'range' => [
'px' => [
'min' => 0,
'max' => 100,
],
],
'default' => [
'unit' => 'px',
'size' => 5,
],
]
);
$this->add_responsive_control(
'tooltip_caret_size',
[
'label' => esc_html__( 'Triangle Size', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'devices' => ['desktop', 'mobile'],
'size_units' => [ 'px' ],
'range' => [
'px' => [
'min' => 0,
'max' => 100,
],
],
'default' => [
'unit' => 'px',
'size' => 10,
],
'mobile_default' => [
'unit' => 'px',
'size' => 6,
],
]
);
$this->add_control(
'tooltip_title_heading',
[
'label' => esc_html__( 'Tooltip Title', 'wpr-addons' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'chart_tooltip_title_color', [
'label' => esc_html__('Title Color', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
'default' => '#FFF'
]
);
$this->add_control(
'chart_tooltip_title_font',
[
'label' => esc_html__( 'Font Family', 'wpr-addons' ),
'type' => \Elementor\Controls_Manager::FONT,
'description' => esc_html__('Use only the fonts located under System options group', 'wpr-addons'),
'default' => 'Arial',
]
);
$this->add_control(
'chart_tooltip_title_font_size',
[
'label' => esc_html__( 'Font Size', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px' ],
'range' => [
'px' => [
'min' => 10,
'max' => 100,
],
],
'default' => [
'unit' => 'px',
'size' => 14,
],
'separator' => 'before'
]
);
$this->add_control(
'chart_tooltip_title_margin_bottom',
[
'label' => esc_html__( 'Title Spacing', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 0,
'max' => 50,
],
],
'size_units' => [ 'px' ],
'default' => [
'unit' => 'px',
'size' => 10,
],
]
);
$this->add_control(
'chart_tooltip_title_align',
[
'label' => esc_html__( 'Title Alignment', 'wpr-addons' ),
'type' => Controls_Manager::CHOOSE,
'default' => 'center',
'label_block' => false,
'options' => [
'left' => [
'title' => esc_html__( 'Left', 'wpr-addons' ),
'icon' => 'eicon-text-align-left',
],
'center' => [
'title' => esc_html__( 'Center', 'wpr-addons' ),
'icon' => 'eicon-text-align-center',
],
'right' => [
'title' => esc_html__( 'Right', 'wpr-addons' ),
'icon' => 'eicon-text-align-right',
],
],
'separator' => 'before'
]
);
$this->add_control(
'tooltip_item_heading',
[
'label' => esc_html__( 'Tooltip Item', 'wpr-addons' ),
'type' => Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'chart_tooltip_item_color', [
'label' => esc_html__('Item Color', 'wpr-addons'),
'type' => Controls_Manager::COLOR,
'default' => '#FFF'
]
);
$this->add_control(
'chart_tooltip_item_font',
[
'label' => esc_html__( 'Font Family', 'wpr-addons' ),
'type' => \Elementor\Controls_Manager::FONT,
'description' => esc_html__('Use only the fonts located under System options group', 'wpr-addons'),
'default' => 'Arial',
]
);
$this->add_control(
'chart_tooltip_item_font_size',
[
'label' => esc_html__( 'Font Size', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'size_units' => [ 'px' ],
'range' => [
'px' => [
'min' => 10,
'max' => 100,
],
],
'default' => [
'unit' => 'px',
'size' => 14,
],
'separator' => 'before'
]
);
$this->add_control(
'chart_tooltip_item_spacing',
[
'label' => esc_html__( 'Item Spacing', 'wpr-addons' ),
'type' => Controls_Manager::SLIDER,
'range' => [
'px' => [
'min' => 0,
'max' => 50,
],
],
'size_units' => [ 'px' ],
'default' => [
'unit' => 'px',
'size' => 10,
],
]
);
$this->add_control(
'chart_tooltip_item_align',
[
'label' => esc_html__( 'Item Alignment', 'wpr-addons' ),
'type' => Controls_Manager::CHOOSE,
'default' => 'center',
'label_block' => false,
'options' => [
'left' => [
'title' => esc_html__( 'Left', 'wpr-addons' ),
'icon' => 'eicon-text-align-left',
],
'center' => [
'title' => esc_html__( 'Center', 'wpr-addons' ),
'icon' => 'eicon-text-align-center',
],
'right' => [
'title' => esc_html__( 'Right', 'wpr-addons' ),
'icon' => 'eicon-text-align-right',
],
],
'separator' => 'before'
]
);
$this->end_controls_section();
}
protected function render() {
$settings = $this->get_settings_for_display();
extract($settings);
$data_charts_array = [];
if ( in_array($chart_type, array('bar', 'bar_horizontal', 'line', 'radar')) ) {
if ( !empty($charts_labels_data) ) :
$data_charts_array['labels'] = explode(',', trim($charts_labels_data));
if ( (!defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code()) && 3 < sizeof($data_charts_array['labels']) ) {
$data_charts_array['labels'] = array_slice($data_charts_array['labels'], 0, 3);
}
endif;
if ( is_array($charts_data_set) && sizeof($charts_data_set) ) {
$charts_counter = 0;
foreach ( $charts_data_set as $chart_data ) {
if ( (!defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code()) && $charts_counter === 3 ) {
break;
}
$data_charts_array['datasets'][] = [
'label' => $chart_data['chart_data_label'],
'data' => array_map('floatval', explode(',', trim($chart_data['chart_data_set'], ','))),
'backgroundColor' => $chart_data['chart_data_background_color'],
'hoverBackgroundColor' => $chart_data['chart_data_background_color_hover'],
'borderColor' => $chart_data['chart_data_border_color'],
'hoverBorderColor' => $chart_data['chart_data_border_color_hover'],
'borderWidth' => $chart_data['chart_data_border_width'],
'barPercentage' => !empty($settings['column_width_x']) ? $settings['column_width_x'] : '',
'fill' => !empty($settings['chart_type_line_fill']) && 'yes' === $settings['chart_type_line_fill'] ? true : false,
];
$charts_counter++;
}
}
} else {
if ( is_array($charts_data_set) && sizeof($charts_data_set) && $settings['data_source'] !== 'csv' ) {
$chart_data_number_values = [];
$chart_background_colors = [];
$chart_background_hover_colors = [];
$chart_data_border_colors = [];
$chart_data_border_hover_colors = [];
$chart_data_border_width = [];
$chart_data_bar_percentage = [];
$charts_counter = 0;
foreach ( $charts_data_set AS $labels_data ) :
if ( (!defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code()) && $charts_counter === 3 ) {
break;
}
$data_charts_array['labels'][] = $labels_data['chart_data_label'];
$charts_counter++;
endforeach;
if ( !empty($charts_labels_data) ) :
$data_charts_array_test = explode(',', trim($charts_labels_data));
endif;
foreach ( $data_charts_array_test as $key=>$test_data ) {
if ( (!defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code()) && $key === 3 ) {
break;
}
$chart_data_number_values[$key] = [];
$outer_key = $key;
foreach ( $charts_data_set as $key=>$chart_data ) {
if ( (!defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code()) && $key === 3 ) {
break;
}
$number_value = sizeof(explode(',', trim($chart_data['chart_data_set'], ','))) >= $outer_key + 1 ? array_map('floatval', explode(',', trim($chart_data['chart_data_set'], ',')))[$outer_key] : '0';
array_push($chart_data_number_values[$outer_key], $number_value);
}
}
foreach ( $charts_data_set as $key=>$chart_data ) {
if ( (!defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code()) && $key === 3 ) {
break;
}
array_push($chart_background_colors, trim($chart_data['chart_data_background_color']));
array_push($chart_background_hover_colors, trim($chart_data['chart_data_background_color_hover']));
array_push($chart_data_border_colors, trim($chart_data['chart_data_border_color']));
array_push($chart_data_border_hover_colors, trim($chart_data['chart_data_border_color_hover']));
array_push($chart_data_border_width, trim($chart_data['chart_data_border_width']));
!empty($settings['column_width_x']) ? array_push($chart_data_bar_percentage, trim($chart_data['column_width_x'])) : '';
}
foreach ( $data_charts_array_test as $key=>$data_test ) {
if ( (!defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code()) && $key === 3 ) {
break;
}
$data_charts_array['datasets'][] = [
'label' => $data_test, // test with fixed value
'data' => $chart_data_number_values[$key],
'backgroundColor' => $chart_background_colors,
'hoverBackgroundColor' => $chart_background_hover_colors,
'borderColor' => $chart_data_border_colors,
'hoverBorderColor' => $chart_data_border_hover_colors,
'borderWidth' => $chart_data_border_width,
'barPercentage' => $chart_data_bar_percentage,
];
}
}
}
if ( !empty($data_source_csv_url) ) {
$data_url = $data_source_csv_url;
} else if ( !empty($data_source_csv_file['url']) ) {
$data_url = $data_source_csv_file['url'];
} else {
$data_url = '';
}
$layout_settings = [
'data_source' => $data_source,
'chart_type' => $settings['chart_type'],
'stacked_bar_chart' => !empty($settings['stacked_bar_chart']) ? $settings['stacked_bar_chart'] : '',
'data_type' => isset($settings['data_type']) ? $settings['data_type'] : 'linear',
'inner_datalabels' => $inner_datalabels,
'inner_datalabels_color' => $inner_datalabels_color,
// 'inner_datalabels_bg_color' => $inner_datalabels_bg_color,
'inner_datalabels_font_size' => !empty($inner_datalabels_font_size['size']) ? $inner_datalabels_font_size['size'] : '',
'inner_datalabels_font_family' => !empty($inner_datalabels_font_family) ? $inner_datalabels_font_family : '',
'inner_datalabels_font_weight' => !empty($inner_datalabels_font_weight) ? $inner_datalabels_font_weight : '',
'inner_datalabels_font_style' => !empty($inner_datalabels_font_style) ? $inner_datalabels_font_style : '',
'ticks_padding_x' => !empty($ticks_padding_x['size']) ? $ticks_padding_x['size'] : '',
'ticks_color_x' => $chart_ticks_color_x,
'ticks_font_family_x' => $ticks_font_family_x,
'ticks_font_style_x' => $ticks_font_style_x,
'ticks_font_weight_x' => $ticks_font_weight_x,
'ticks_font_size_x' => !empty($ticks_font_size_x['size']) ? $ticks_font_size_x['size'] : '',
'ticks_padding_y' => !empty($ticks_padding_y['size']) ? $ticks_padding_y['size'] : '',
'ticks_color_y' => isset($chart_ticks_color_y) ? $chart_ticks_color_y : '',
'point_labels_color_r' => isset($chart_point_labels_color_r) ? $chart_point_labels_color_r : '',
'ticks_font_family_y' => $ticks_font_family_y,
'ticks_font_style_y' => $ticks_font_style_y,
'ticks_font_weight_y' => $ticks_font_weight_y,
'ticks_font_size_y' => !empty($ticks_font_size_y['size']) ? $ticks_font_size_y['size'] : '',
'point_labels_font_family_r' => $point_labels_font_family_r,
'point_labels_font_style_r' => $point_labels_font_style_r,
'point_labels_font_weight_r' => $point_labels_font_weight_r,
'point_labels_font_size_r' => !empty($point_labels_font_size_r['size']) ? $point_labels_font_size_r['size'] : '',
'exclude_dataset_on_click' => $exclude_dataset_on_click,
'trigger_tooltip_on' => $trigger_tooltip_on,
'chart_labels' => !empty($data_charts_array['labels']) ? $data_charts_array['labels'] : '',
'chart_datasets' => !empty($data_charts_array['datasets']) ? wp_json_encode($data_charts_array['datasets']) : '',
'show_chart_legend' => $show_chart_legend,
'reverse_legend' => $reverse_legend,
'reverse_x' => $reverse_x,
'reverse_y' => $reverse_y,
'legend_shape' => $charts_legend_shape,
'legend_box_width' => $legend_box_width['size'],
'legend_position' => $settings['charts_legend_position'],
'legend_align' => $settings['charts_legend_align'],
'legend_text_color' => $chart_legend_text_color,
'legend_font_family' => $legend_font_family,
'legend_font_size' => $legend_font_size['size'],
'legend_font_style' => $legend_font_style,
'legend_font_weight' => $legend_font_weight,
'legend_padding' => $chart_legend_padding['size'],
'chart_animation' => isset($chart_animation) ? $chart_animation : '',
'chart_animation_loop' => isset($chart_animation_loop) ? $chart_animation_loop : '',
'chart_animation_duration' => isset($chart_animation_duration) ? $chart_animation_duration : '',
'animation_transition_type' => $animation_transition_type,
'show_chart_title' => $settings['show_chart_title'],
'chart_title' => !empty($settings['chart_title']) ? $settings['chart_title'] : '',
'chart_title_align' => !empty($chart_title_align) ? $chart_title_align : '',
'chart_title_position' => !empty($chart_title_position) ? $chart_title_position : '',
'chart_title_color' => !empty($chart_title_color) ? $chart_title_color : '',
'title_font_family' => $title_font_family,
'title_font_size' => isset($title_font_size) ? $title_font_size['size'] : '',
'title_font_style' => isset($title_font_style) ? $title_font_style : '',
'title_font_weight' => $title_font_weight,
'title_padding' => isset($chart_title_padding) ? $chart_title_padding['size'] : '',
'show_chart_tooltip' => $show_chart_tooltip,
'tooltips_percent' => $tooltips_percent,
'chart_interaction_mode' => $chart_interaction_mode,
'tooltip_position' => $chart_tooltip_position,
'tooltip_padding' => isset($tooltip_padding['size']) ? $tooltip_padding['size'] : 1,
'tooltip_caret_size' => isset($tooltip_caret_size['size']) ? $tooltip_caret_size['size'] : 1,
'tooltip_caret_size_mobile' => isset($tooltip_caret_size_mobile) ? $tooltip_caret_size_mobile['size'] : 0,
'chart_tooltip_bg_color' => $chart_tooltip_bg_color,
'chart_tooltip_title_color' => $chart_tooltip_title_color,
'chart_tooltip_title_font' => $chart_tooltip_title_font,
'chart_tooltip_title_font_size' => isset($chart_tooltip_title_font_size['size']) ? $chart_tooltip_title_font_size['size'] : 1,
'chart_tooltip_title_align' => $chart_tooltip_title_align,
'chart_tooltip_title_margin_bottom' => isset($chart_tooltip_title_margin_bottom['size']) ? $chart_tooltip_title_margin_bottom['size'] : 1,
'chart_tooltip_item_color' => $chart_tooltip_item_color,
'chart_tooltip_item_font' => $chart_tooltip_item_font,
'chart_tooltip_item_font_size' => isset($chart_tooltip_item_font_size['size']) ? $chart_tooltip_item_font_size['size'] : 1,
'chart_tooltip_item_align' => $chart_tooltip_item_align,
'chart_tooltip_item_spacing' => isset($chart_tooltip_item_spacing['size']) ? $chart_tooltip_item_spacing['size'] : 1,
'show_lines' => isset($show_lines) ? $show_lines : '',
'line_dots' => isset($line_dots) ? $line_dots : '',
'line_dots_radius' => isset($line_dots_radius) ? $line_dots_radius['size'] : '',
'line_dots_radius_mobile' => isset($line_dots_radius_mobile) ? $line_dots_radius_mobile['size'] : 0,
'border_dash_offset' => $border_dash_offset,
'border_dash_length' => $border_dash_length,
'border_dash_spacing' => $border_dash_spacing,
'border_dash_offset_r' => $border_dash_offset_r,
'border_dash_length_r' => $border_dash_length_r,
'border_dash_spacing_r' => $border_dash_spacing_r,
'display_x_axis' => $display_x_axis,
'display_x_ticks' => $display_x_ticks,
'display_x_axis_title' => $display_x_axis_title,
'x_axis_title' => $x_axis_title,
'axis_title_color_x' => $axis_title_color_x,
'axis_title_font_family_x' => $axis_title_font_family_x,
'axis_title_font_style_x' => $axis_title_font_style_x,
'axis_title_font_weight_x' => $axis_title_font_weight_x,
'axis_title_font_size_x' => !empty($axis_title_font_size_x['size']) ? $axis_title_font_size_x['size'] : '',
'rotation_x' => $labels_rotation_x_axis,
'axis_grid_line_color_x' => $axis_grid_line_color_x,
'grid_line_width_x' => $grid_line_width_x,
'display_y_axis' => $display_y_axis,
'display_y_ticks' => $display_y_ticks,
'y_step_size' => $y_step_size,
'x_step_size' => $x_step_size,
'display_r_axis' => $display_r_axis,
'display_r_ticks' => $display_r_ticks,
'r_step_size' => $r_step_size,
'display_y_axis_title' => $display_y_axis_title,
'y_axis_title' => $y_axis_title,
'axis_title_color_y' => $axis_title_color_y,
'axis_title_font_family_y' => $axis_title_font_family_y,
'axis_title_font_style_y' => $axis_title_font_style_y,
'axis_title_font_weight_y' => $axis_title_font_weight_y,
'axis_title_font_size_y' => !empty($axis_title_font_size_y['size']) ? $axis_title_font_size_y['size'] : '',
'rotation_y' => $labels_rotation_y_axis,
'axis_grid_line_color_y' => $axis_grid_line_color_y,
'grid_line_width_y' => $grid_line_width_y,
'grid_line_width_r' => $grid_line_width_r,
'axis_grid_line_color_r' => $axis_grid_line_color_r,
'angle_lines_color' => isset($angle_lines_color) ? $angle_lines_color : '',
'axis_labels_color' => isset($axis_labels_color) ? $axis_labels_color : '',
'axis_labels_bg_color' => isset($axis_labels_bg_color) ? $axis_labels_bg_color : '',
'axis_labels_padding' => isset($axis_labels_padding) ? $axis_labels_padding['size'] : '',
'min_value' => $min_value,
'max_value' => $max_value,
'url' => $data_url,
'separator' => $data_csv_separator,
];
$this->add_render_attribute( 'chart-settings', [
'class' => 'wpr-charts-container',
'data-settings' => wp_json_encode( $layout_settings ),
] );
echo '<div ' . $this->get_render_attribute_string( 'chart-settings') . '>';
if ( $data_source === 'csv' ) {
echo '<span class="wpr-rotating-plane"></span>';
}
echo '<div class="wpr-charts-wrapper">';
echo '<canvas class="wpr-chart"></canvas>';
echo '</div>';
echo '</div>';
}
}