PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.4.8
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.4.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/utils.js +86 -0 3.1.23.4.8 View file →
@@ -14,8 +14,14 @@
14 14 return data;
15 15 };
16 16
17 17 // A fork of deep-compact package as it had some issues
18 +// NOTE: This method is likely to create problems.
19 +// Problem Scenario #1:
20 +// - A table has 5 columns (series). Say the 1st column is Date and others are Numbers.
21 +// - If the 1st columns format (series.format) is provided, DataTable.js gets 6 (0-5) series.
22 +// - BUT if the 1st columns format (series.format) is empty, DataTable.js gets 5 (1-4) series.
23 +// That is why when sending options to DataTable.js, filterChart method has not been used.
18 24 const notEmpty = value => {
19 25 let key;
20 26
21 27 if ( Array.isArray( value ) ) {
@@ -90,5 +96,85 @@
90 96 arrData[ arrData.length - 1 ].push( strMatchedValue );
91 97 }
92 98
93 99 return ( arrData );
100 +};
101 +
102 +
103 +export const isChecked = ( settings, param ) => {
104 + return true === settings[param] || 'true' === settings[param] || '1' === settings[param] || 1 === settings[param];
105 +};
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;
94 180 };