Skip to content

Commit 3ae3ab3

Browse files
Merge branch 'development' of https://github.com/codeinwp/visualizer into issue-733
2 parents a7e5cc3 + bc46686 commit 3ae3ab3

File tree

6 files changed

+88
-7
lines changed

6 files changed

+88
-7
lines changed

classes/Visualizer/Gutenberg/build/block.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

classes/Visualizer/Gutenberg/src/Components/ChartRender.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import DataTable from './DataTable.js';
77

88
import merge from 'merge';
99

10-
import { compact, formatDate, isValidJSON } from '../utils.js';
10+
import { compact, formatDate, isValidJSON, formatData } from '../utils.js';
1111

1212
/**
1313
* WordPress dependencies
@@ -97,6 +97,7 @@ class ChartRender extends Component {
9797
compact( this.props.chart['visualizer-settings'])
9898
}
9999
height="500px"
100+
formatters={ formatData( data ) }
100101
/>
101102
) : (
102103
<Chart
@@ -109,6 +110,7 @@ class ChartRender extends Component {
109110
compact( this.props.chart['visualizer-settings'])
110111
}
111112
height="500px"
113+
formatters={ formatData( data ) }
112114
/>
113115
) ) }
114116

classes/Visualizer/Gutenberg/src/Components/ChartSelect.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import PanelButton from './PanelButton.js';
2323

2424
import merge from 'merge';
2525

26-
import { compact, formatDate, isValidJSON } from '../utils.js';
26+
import { compact, formatDate, isValidJSON, formatData } from '../utils.js';
2727

2828
/**
2929
* WordPress dependencies
@@ -169,6 +169,7 @@ class ChartSelect extends Component {
169169
compact( this.props.chart['visualizer-settings'])
170170
}
171171
height="500px"
172+
formatters={ formatData( data ) }
172173
/>
173174
) : (
174175
<Chart
@@ -181,6 +182,7 @@ class ChartSelect extends Component {
181182
compact( this.props.chart['visualizer-settings'])
182183
}
183184
height="500px"
185+
formatters={ formatData( data ) }
184186
/>
185187
)
186188
) }

classes/Visualizer/Gutenberg/src/Components/Charts.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { Chart } from 'react-google-charts';
55

66
import DataTable from './DataTable.js';
77

8-
import { formatDate, filterCharts } from '../utils.js';
8+
import { formatDate, filterCharts, formatData } from '../utils.js';
99

1010
/**
1111
* WordPress dependencies
@@ -152,13 +152,15 @@ class Charts extends Component {
152152
rows={ data['visualizer-data'] }
153153
columns={ data['visualizer-series'] }
154154
options={ filterCharts( data['visualizer-settings']) }
155+
formatters={ formatData( data ) }
155156
/>
156157
) : (
157158
<Chart
158159
chartType={ chart }
159160
rows={ data['visualizer-data'] }
160161
columns={ data['visualizer-series'] }
161162
options={ filterCharts( data['visualizer-settings']) }
163+
formatters={ formatData( data ) }
162164
/>
163165
) ) }
164166

classes/Visualizer/Gutenberg/src/utils.js

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,3 +103,78 @@ export const CSVToArray = ( strData, strDelimiter ) => {
103103
export const isChecked = ( settings, param ) => {
104104
return true === settings[param] || 'true' === settings[param] || '1' === settings[param] || 1 === settings[param];
105105
};
106+
107+
108+
export const formatData = ( chart ) => {
109+
let library = chart['visualizer-chart-library'];
110+
111+
switch ( library ) {
112+
case 'GoogleCharts':
113+
return formatDataForGoogleCharts( chart );
114+
}
115+
};
116+
117+
export const formatDataForGoogleCharts = ( chart ) => {
118+
let settings = chart['visualizer-settings'];
119+
let type = chart['visualizer-chart-type'];
120+
let series = chart['visualizer-series'];
121+
122+
let formatters = [];
123+
124+
if ( settings.series ) {
125+
switch ( type ) {
126+
case 'tabular':
127+
for ( let i in settings.series ) {
128+
i = parseInt( i );
129+
if ( ! series[i + 1]) {
130+
continue;
131+
}
132+
if ( settings.series[i].format && '' !== settings.series[i].format ) {
133+
let col = i + 1;
134+
let formatter = getFormatterForGoogle( series[i + 1].type );
135+
if ( formatter ) {
136+
formatters.push({ type: formatter, options: { pattern: settings.series[i].format }, column: col });
137+
}
138+
}
139+
}
140+
break;
141+
default:
142+
for ( let i = 0; i < settings.series.length; i++ ) {
143+
if ( ! series[i + 1] || 'undefined' === typeof settings.series[i]) {
144+
continue;
145+
}
146+
if ( settings.series[i].format && '' !== settings.series[i].format ) {
147+
let col = i + 1;
148+
let formatter = getFormatterForGoogle( series[i + 1].type );
149+
if ( formatter ) {
150+
formatters.push({ type: formatter, options: { pattern: settings.series[i].format }, column: col });
151+
}
152+
}
153+
}
154+
break;
155+
}
156+
} else if ( 'pie' === type && settings.format && '' !== settings.format ) {
157+
formatters.push({ type: getFormatterForGoogle( 'number' ), options: { pattern: settings.format }, column: 1 });
158+
}
159+
160+
if ( settings.hAxis && series[0]) {
161+
let formatter = getFormatterForGoogle( series[0].type );
162+
if ( formatter ) {
163+
formatters.push({ type: formatter, options: { pattern: settings.hAxis.format }, column: 0 });
164+
}
165+
}
166+
167+
return formatters;
168+
};
169+
170+
export const getFormatterForGoogle = ( dataType ) => {
171+
switch ( dataType ) {
172+
case 'number':
173+
return 'NumberFormat';
174+
case 'date':
175+
case 'datetime':
176+
case 'timeofday':
177+
return 'DateFormat';
178+
}
179+
return null;
180+
};

classes/Visualizer/Render/Library.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ private function _renderChartBox( $placeholder_id, $chart_id ) {
319319
admin_url( 'admin-ajax.php' )
320320
);
321321

322-
$chart_status = array( 'date' => get_the_modified_date( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $chart_id ), 'error' => get_post_meta( $chart_id, Visualizer_Plugin::CF_ERROR, true ), 'icon' => 'dashicons-yes-alt', 'title' => '' );
322+
$chart_status = array( 'date' => get_the_modified_date( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $chart_id ), 'error' => get_post_meta( $chart_id, Visualizer_Plugin::CF_ERROR, true ), 'icon' => 'dashicons-yes-alt', 'title' => 'A-OK!' );
323323
if ( ! empty( $chart_status['error'] ) ) {
324324
$chart_status['icon'] = 'error dashicons-dismiss';
325325
$chart_status['title'] = __( 'Click to view the error', 'visualizer' );
@@ -340,7 +340,7 @@ private function _renderChartBox( $placeholder_id, $chart_id ) {
340340
}
341341
echo '<a class="visualizer-chart-action visualizer-chart-shortcode" href="javascript:;" title="', esc_attr__( 'Click to copy shortcode', 'visualizer' ), '" data-clipboard-text="', esc_attr( $shortcode ), '"></a>';
342342
echo '<span>&nbsp;</span>';
343-
echo '<hr><div class="visualizer-chart-status"><span class="visualizer-date" title="' . __( 'Last Updated', 'visualizer' ) . '">' . $chart_status['date'] . '</span><span class="visualizer-error"><i class="dashicons ' . $chart_status['icon'] . '" data-viz-error="' . esc_attr( str_replace( '"', "'", $chart_status['error'] ) ) . '" title="' . esc_attr( $chart_status['title'] ) . '"></i></span></div>';
343+
echo '<hr><div class="visualizer-chart-status"><span title="' . __( 'Chart ID', 'visualizer' ) . '">(' . $chart_id . '):</span> <span class="visualizer-date" title="' . __( 'Last Updated', 'visualizer' ) . '">' . $chart_status['date'] . '</span><span class="visualizer-error"><i class="dashicons ' . $chart_status['icon'] . '" data-viz-error="' . esc_attr( str_replace( '"', "'", $chart_status['error'] ) ) . '" title="' . esc_attr( $chart_status['title'] ) . '"></i></span></div>';
344344
echo '</div>';
345345
echo '</div>';
346346
}

0 commit comments

Comments
 (0)