PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.10.7
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.10.7
4.0.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 All 149 releases
← All changes | js/render-google.js +35 -55 4.0.33.10.7 View file →
@@ -25,28 +25,19 @@
25 25 if ( ! chart ) {
26 26 return;
27 27 }
28 28
29 - if ( chart.library && chart.library !== 'google' && chart.library !== 'GoogleCharts' ) {
30 - return;
31 - }
32 -
33 29 // re-render the chart only if it doesn't have annotations and it is on the front-end
34 30 // this is to prevent the chart from showing "All series on a given axis must be of the same data type" during resize.
35 31 // remember, some charts do not support annotations so they should not be included in this.
36 32 var no_annotation_charts = ['tabular', 'timeline', 'gauge', 'geo', 'bubble', 'candlestick'];
37 33 if ( undefined !== chart.settings && undefined !== chart.settings.series && undefined === chart.settings.series.length ) {
38 - var seriesKeys = Object.keys( chart.settings.series );
39 - // Only convert when keys are numeric indices (PHP JSON-encoded array).
40 - // String keys (e.g. named series from manual config) must be left as-is.
41 - if ( seriesKeys.every( function( k ) { return ! isNaN( k ); } ) ) {
42 - var chartSeries = [];
43 - var chartSeriesValue = Object.values( chart.settings.series );
44 - $.each( seriesKeys, function( index, element ) {
45 - chartSeries[ element ] = chartSeriesValue[ index ];
46 - } );
47 - chart.settings.series = chartSeries;
48 - }
34 + var chartSeries = [];
35 + var chartSeriesValue = Object.values( chart.settings.series );
36 + $.each( Object.keys( chart.settings.series ), function( index, element ) {
37 + chartSeries[element] = chartSeriesValue[index];
38 + } );
39 + chart.settings.series = chartSeries;
49 40 }
50 41 if(id !== 'canvas' && typeof chart.series !== 'undefined' && typeof chart.settings.series !== 'undefined' && ! no_annotation_charts.includes(chart.type) ) {
51 42 hasAnnotation = chart.series.length - chart.settings.series.length > 1;
52 43 }
@@ -58,14 +49,13 @@
58 49
59 50 function renderSpecificChart(id, chart) {
60 51 var render, container, series, data, table, settings, i, j, row, date, axis, property, format, formatter;
61 52
62 - if( chart.library !== 'google' ) {
53 + if ( ! window.isResizeRequest && ( $('#' + id).hasClass('visualizer-chart-loaded') || ( 'canvas' !== id && $('#' + id).children( ':not(.loader)' ).length > 0 ) ) ) {
63 54 return;
64 55 }
65 -
66 - // Bail if the chart is already rendered or is being rendered.
67 - if ( ! window.isResizeRequest && ( $('#' + id).hasClass('visualizer-chart-loaded') || ( 'canvas' !== id && $('#' + id).children( ':not(.loader, style)' ).length > 0 ) ) ) {
56 +
57 + if(chart.library !== 'google'){
68 58 return;
69 59 }
70 60 rendered_charts[id] = 'yes';
71 61
@@ -360,16 +350,21 @@
360 350 format_data(id, table, series[i + 1].type, settings.series[i].format, i + 1);
361 351 }
362 352 break;
363 353 default:
364 - // Single-pass: walk columns, skip annotation/helper roles, apply formats in order.
365 - var k = 0; // index into settings.series (visible series)
366 - for (var c = 1; c < series.length && k < settings.series.length; c++) { // skip label at 0
367 - if (table.getColumnProperty(c, 'role')) continue; // helper/annotation column
368 - var s = settings.series[k++];
369 - if (!s || !s.format) continue;
370 - if (!series[c]) continue;
371 - format_data(id, table, series[c].type, s.format, c);
354 + for (i = 0; i < settings.series.length; i++) {
355 + if (!series[i + 1] || typeof settings.series[i] === 'undefined') {
356 + continue;
357 + }
358 + var seriesIndexToUse = i + 1;
359 +
360 + // if an annotation "swallowed" a series, use the following one.
361 + if(series_annotations.includes(i)){
362 + seriesIndexToUse++;
363 + }
364 + if ( series[seriesIndexToUse] ) {
365 + format_data(id, table, series[seriesIndexToUse].type, settings.series[i].format, seriesIndexToUse);
366 + }
372 367 }
373 368 break;
374 369 }
375 370 } else if (chart.type === 'pie' && settings.format && settings.format !== '') {
@@ -452,32 +447,21 @@
452 447 return;
453 448 }
454 449
455 450 var formatter = null;
456 - var $formatInput = $('input.control-text[name*="[format]"]').filter(function() {
457 - return $(this).val() === format;
458 - });
459 - try {
460 - switch (type) {
461 - case 'number':
462 - formatter = new gv.NumberFormat({pattern: format});
463 - break;
464 - case 'date':
465 - case 'datetime':
466 - case 'timeofday':
467 - formatter = new gv.DateFormat({pattern: format});
468 - break;
469 - }
451 + switch (type) {
452 + case 'number':
453 + formatter = new gv.NumberFormat({pattern: format});
454 + break;
455 + case 'date':
456 + case 'datetime':
457 + case 'timeofday':
458 + formatter = new gv.DateFormat({pattern: format});
459 + break;
460 + }
470 461
471 - if (formatter) {
472 - formatter.format(table, index);
473 - $formatInput.nextAll('.visualizer-format-error').remove();
474 - }
475 - } catch (e) {
476 - if ($formatInput.length) {
477 - $formatInput.nextAll('.visualizer-format-error').remove();
478 - $('<p class="visualizer-format-error" style="color:#cc0000;margin:4px 0 0"></p>').text(visualizer.l10n.invalid_format).insertAfter($formatInput);
479 - }
462 + if (formatter) {
463 + formatter.format(table, index);
480 464 }
481 465
482 466 var arr = id.split('-');
483 467 $('body').trigger('visualizer:format:chart', {id: parseInt(arr[1]), data: table, column: index});
@@ -563,12 +547,8 @@
563 547 if(v.is_front == true){ // jshint ignore:line
564 548 // check what all chart types to load.
565 549 $chart_types = [];
566 550 $.each(v.charts, function(i, c){
567 - // Only consider charts rendered by Google Charts.
568 - if ( c.library && c.library !== 'google' && c.library !== 'GoogleCharts' ) {
569 - return;
570 - }
571 551 var $type = c.type;
572 552 switch($type){
573 553 case 'bar':
574 554 case 'column':
@@ -597,9 +577,9 @@
597 577 case 'radar':
598 578 $type = null;
599 579 break;
600 580 }
601 - if($type != null && $type !== ''){
581 + if($type != null){
602 582 $chart_types.push($type);
603 583 }
604 584 });
605 585 }