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

135 lines 3.6 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, formatData } 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
40 let chartVersion = 'undefined' !== typeof google ? google.visualization.Version : 'current';
41
42 let chart, footer;
43
44 let data = formatDate( JSON.parse( JSON.stringify( this.props.chart ) ) );
45
46 if ( 0 <= [ 'gauge', 'tabular', 'timeline' ].indexOf( this.props.chart['visualizer-chart-type']) ) {
47 if ( 'DataTable' === data['visualizer-chart-library']) {
48 chart = data['visualizer-chart-type'];
49 } else {
50 chart = this.props.chart['visualizer-chart-type'];
51 if ( 'tabular' === chart ) {
52 chart = 'table';
53 }
54 chart = startCase( chart );
55 }
56 } else {
57 chart = `${ startCase( this.props.chart['visualizer-chart-type']) }Chart`;
58 }
59
60 if ( data['visualizer-data-exploded']) {
61 footer = __( 'Annotations in this chart may not display here but they will display in the front end.' );
62 }
63
64 return (
65 <div className={ this.props.className }>
66
67 { ( null !== this.props.chart ) &&
68 <Fragment>
69
70 <BlockControls key="toolbar-controls">
71 <Toolbar
72 className='components-toolbar'
73 >
74 <Tooltip text={ __( 'Edit Chart' ) }>
75 <Button
76 className="components-icon-button components-toolbar__control edit-pie-chart"
77 onClick={ this.props.editChart }
78 >
79 <Dashicon icon={ 'edit' } />
80 </Button>
81 </Tooltip>
82 </Toolbar>
83 </BlockControls>
84
85 { ( 'DataTable' === data['visualizer-chart-library']) ? (
86 <DataTable
87 id={ this.props.id }
88 rows={ data['visualizer-data'] }
89 columns={ data['visualizer-series'] }
90 options={ data['visualizer-settings'] }
91 />
92 ) : ( '' !== data['visualizer-data-exploded'] ? (
93 <Chart
94 chartVersion={ chartVersion }
95 chartType={ chart }
96 rows={ data['visualizer-data'] }
97 columns={ data['visualizer-series'] }
98 options={
99 isValidJSON( this.props.chart['visualizer-settings'].manual ) ?
100 merge( compact( this.props.chart['visualizer-settings']), JSON.parse( this.props.chart['visualizer-settings'].manual ) ) :
101 compact( this.props.chart['visualizer-settings'])
102 }
103 height="500px"
104 formatters={ formatData( data ) }
105 />
106 ) : (
107 <Chart
108 chartVersion={ chartVersion }
109 chartType={ chart }
110 rows={ data['visualizer-data'] }
111 columns={ data['visualizer-series'] }
112 options={
113 isValidJSON( this.props.chart['visualizer-settings'].manual ) ?
114 merge( compact( this.props.chart['visualizer-settings']), JSON.parse( this.props.chart['visualizer-settings'].manual ) ) :
115 compact( this.props.chart['visualizer-settings'])
116 }
117 height="500px"
118 formatters={ formatData( data ) }
119 />
120 ) ) }
121
122 <div className="visualizer-settings__charts-footer"><sub>
123 { footer }
124 </sub></div>
125
126 </Fragment>
127 }
128
129 </div>
130 );
131 }
132 }
133
134 export default ChartRender;
135