PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.4.1
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.4.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 / Gutenberg / src / Components / ChartRender.js

ChartRender.js in Visualizer – Tables & Charts Manager with Built-in AI Generator 3.4.1, at classes/Visualizer/Gutenberg/src/Components/ChartRender.js

124 lines 3.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * External dependencies
3 */
4 import { Chart } from 'react-google-charts';
5
6 import DataTable from './DataTable.js';
7
8 import merge from 'merge';
9
10 import { compact, formatDate, isValidJSON } from '../utils.js';
11
12 /**
13 * WordPress dependencies
14 */
15 const { startCase } = lodash;
16
17 const { __ } = wp.i18n;
18
19 const {
20 Component,
21 Fragment
22 } = wp.element;
23
24 const {
25 Button,
26 Dashicon,
27 Toolbar,
28 Tooltip
29 } = wp.components;
30
31 const { BlockControls } = wp.blockEditor || wp.editor;
32
33 class ChartRender extends Component {
34 constructor() {
35 super( ...arguments );
36 }
37
38 render() {
39 let chart, footer;
40
41 let data = formatDate( JSON.parse( JSON.stringify( this.props.chart ) ) );
42
43 if ( 0 <= [ 'gauge', 'table', 'timeline', 'dataTable' ].indexOf( this.props.chart['visualizer-chart-type']) ) {
44 if ( 'dataTable' === data['visualizer-chart-type']) {
45 chart = data['visualizer-chart-type'];
46 } else {
47 chart = startCase( this.props.chart['visualizer-chart-type']);
48 }
49 } else {
50 chart = `${ startCase( this.props.chart['visualizer-chart-type']) }Chart`;
51 }
52
53 if ( data['visualizer-data-exploded']) {
54 footer = __( 'Annotations in this chart may not display here but they will display in the front end.' );
55 }
56
57 return (
58 <div className={ this.props.className }>
59
60 { ( null !== this.props.chart ) &&
61 <Fragment>
62
63 <BlockControls key="toolbar-controls">
64 <Toolbar
65 className='components-toolbar'
66 >
67 <Tooltip text={ __( 'Edit Chart' ) }>
68 <Button
69 className="components-icon-button components-toolbar__control edit-pie-chart"
70 onClick={ this.props.editChart }
71 >
72 <Dashicon icon={ 'edit' } />
73 </Button>
74 </Tooltip>
75 </Toolbar>
76 </BlockControls>
77
78 { ( 'dataTable' === chart ) ? (
79 <DataTable
80 id={ this.props.id }
81 rows={ data['visualizer-data'] }
82 columns={ data['visualizer-series'] }
83 options={ data['visualizer-settings'] }
84 />
85 ) : ( '' !== data['visualizer-data-exploded'] ? (
86 <Chart
87 chartType={ chart }
88 rows={ data['visualizer-data'] }
89 columns={ data['visualizer-series'] }
90 options={
91 isValidJSON( this.props.chart['visualizer-settings'].manual ) ?
92 merge( compact( this.props.chart['visualizer-settings']), JSON.parse( this.props.chart['visualizer-settings'].manual ) ) :
93 compact( this.props.chart['visualizer-settings'])
94 }
95 height="500px"
96 />
97 ) : (
98 <Chart
99 chartType={ chart }
100 rows={ data['visualizer-data'] }
101 columns={ data['visualizer-series'] }
102 options={
103 isValidJSON( this.props.chart['visualizer-settings'].manual ) ?
104 merge( compact( this.props.chart['visualizer-settings']), JSON.parse( this.props.chart['visualizer-settings'].manual ) ) :
105 compact( this.props.chart['visualizer-settings'])
106 }
107 height="500px"
108 />
109 ) ) }
110
111 <div className="visualizer-settings__charts-footer"><sub>
112 { footer }
113 </sub></div>
114
115 </Fragment>
116 }
117
118 </div>
119 );
120 }
121 }
122
123 export default ChartRender;
124