PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.10.8
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.10.8
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
← All changes | classes/Visualizer/Gutenberg/src/Components/ChartRender.js +69 -16 3.1.23.10.8 View file →
@@ -2,11 +2,13 @@
2 2 * External dependencies
3 3 */
4 4 import { Chart } from 'react-google-charts';
5 5
6 +import DataTable from './DataTable.js';
7 +
6 8 import merge from 'merge';
7 9
8 -import { compact, formatDate, isValidJSON } from '../utils.js';
10 +import { compact, formatDate, isValidJSON, formatData, googleChartPackages } from '../utils.js';
9 11
10 12 /**
11 13 * WordPress dependencies
12 14 */
@@ -25,9 +27,9 @@
25 27 Toolbar,
26 28 Tooltip
27 29 } = wp.components;
28 30
29 -const { BlockControls } = wp.editor;
31 +const { BlockControls } = wp.blockEditor || wp.editor;
30 32
31 33 class ChartRender extends Component {
32 34 constructor() {
33 35 super( ...arguments );
@@ -34,18 +36,38 @@
34 36 }
35 37
36 38 render() {
37 39
38 - let chart;
40 + let chartVersion = 'undefined' !== typeof google ? google.visualization.Version : 'current';
39 41
42 + let chart, footer;
43 +
40 44 let data = formatDate( JSON.parse( JSON.stringify( this.props.chart ) ) );
41 45
42 - if ( 0 <= [ 'gauge', 'table', 'timeline' ].indexOf( this.props.chart['visualizer-chart-type']) ) {
43 - chart = startCase( this.props.chart['visualizer-chart-type']);
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 + }
44 56 } else {
45 57 chart = `${ startCase( this.props.chart['visualizer-chart-type']) }Chart`;
46 58 }
47 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 + if ( this.props.chart['visualizer-series'] && 0 <= [ 'date', 'datetime', 'timeofday' ].indexOf( this.props.chart['visualizer-series'][0].type ) ) {
65 + if ( this.props.chart['visualizer-settings'] && ( this.props.chart['visualizer-settings'].hAxis && '' == this.props.chart['visualizer-settings'].hAxis.format ) ) {
66 + this.props.chart['visualizer-settings'].hAxis.format = 'YYYY-MM-dd';
67 + }
68 + }
69 +
48 70 return (
49 71 <div className={ this.props.className }>
50 72
51 73 { ( null !== this.props.chart ) &&
@@ -65,19 +87,50 @@
65 87 </Tooltip>
66 88 </Toolbar>
67 89 </BlockControls>
68 90
69 - <Chart
70 - chartType={ chart }
71 - rows={ data['visualizer-data'] }
72 - columns={ data['visualizer-series'] }
73 - options={
74 - isValidJSON( this.props.chart['visualizer-settings'].manual ) ?
75 - merge( compact( this.props.chart['visualizer-settings']), JSON.parse( this.props.chart['visualizer-settings'].manual ) ) :
76 - compact( this.props.chart['visualizer-settings'])
77 - }
78 - height="500px"
79 - />
91 + { ( 'DataTable' === data['visualizer-chart-library']) ? (
92 + <DataTable
93 + id={ this.props.id }
94 + rows={ data['visualizer-data'] }
95 + columns={ data['visualizer-series'] }
96 + options={ data['visualizer-settings'] }
97 + />
98 + ) : ( '' !== data['visualizer-data-exploded'] ? (
99 + <Chart
100 + chartVersion={ chartVersion }
101 + chartType={ chart }
102 + rows={ data['visualizer-data'] }
103 + columns={ data['visualizer-series'] }
104 + options={
105 + isValidJSON( this.props.chart['visualizer-settings'].manual ) ?
106 + merge( compact( this.props.chart['visualizer-settings']), JSON.parse( this.props.chart['visualizer-settings'].manual ) ) :
107 + compact( this.props.chart['visualizer-settings'])
108 + }
109 + height="500px"
110 + formatters={ formatData( data ) }
111 + chartPackages={ googleChartPackages }
112 + />
113 + ) : (
114 + <Chart
115 + chartVersion={ chartVersion }
116 + chartType={ chart }
117 + rows={ data['visualizer-data'] }
118 + columns={ data['visualizer-series'] }
119 + options={
120 + isValidJSON( this.props.chart['visualizer-settings'].manual ) ?
121 + merge( compact( this.props.chart['visualizer-settings']), JSON.parse( this.props.chart['visualizer-settings'].manual ) ) :
122 + compact( this.props.chart['visualizer-settings'])
123 + }
124 + height="500px"
125 + formatters={ formatData( data ) }
126 + chartPackages={ googleChartPackages }
127 + />
128 + ) ) }
129 +
130 + <div className="visualizer-settings__charts-footer"><sub>
131 + { footer }
132 + </sub></div>
80 133
81 134 </Fragment>
82 135 }
83 136