PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 1.6.6
Visualizer – Tables & Charts Manager with Built-in AI Generator v1.6.6
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 / js / render.js

render.js in Visualizer – Tables & Charts Manager with Built-in AI Generator 1.6.6, at js/render.js

240 lines 6.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function(v, g) {
2 var gv;
3
4 v.objects = {};
5
6 v.renderChart = function(id) {
7 var chart, render, container, series, data, table, settings, i, j, row, date, axis, property, format, formatter;
8
9 chart = v.charts[id];
10 series = chart.series;
11 data = chart.data;
12 settings = chart.settings;
13
14 container = document.getElementById(id);
15 table = new gv.DataTable({cols: series});
16
17 render = v.objects[id] || null;
18 if (!render) {
19 switch (chart.type) {
20 case "gauge":
21 case "table":
22 case "timeline":
23 render = chart.type.charAt(0).toUpperCase() + chart.type.slice(1);
24 break;
25 default:
26 render = chart.type.charAt(0).toUpperCase() + chart.type.slice(1) + 'Chart';
27 break;
28 }
29
30 render = new gv[render](container);
31 }
32
33 switch (v.charts[id].type) {
34 case 'pie':
35 if (settings.slices) {
36 for (i in settings.slices) {
37 if (settings.slices[i]['color'] == '') {
38 delete settings.slices[i]['color'];
39 }
40 }
41 }
42 break;
43 case 'line':
44 case 'bar':
45 case 'column':
46 case 'area':
47 case 'scatter':
48 case 'candlestick':
49 if (settings.series) {
50 for (i in settings.series) {
51 if (settings.series[i]['color'] == '') {
52 delete settings.series[i]['color'];
53 }
54 }
55 }
56
57 if (settings.series && settings.legend && settings.legend.position == "left")
58 {
59 settings.targetAxisIndex = 1;
60 }
61 break;
62 case 'geo':
63 if (settings.region != undefined && settings.region.replace(/^\s+|\s+$/g, '') == '') {
64 settings['region'] = 'world';
65 }
66 break;
67 case 'table':
68 if (parseInt(settings['pagination']) != 1)
69 {
70 delete settings['pageSize'];
71 }
72 break;
73 case 'gauge':
74 break;
75 case 'timeline':
76 settings['timeline'] = [];
77 settings['timeline']['groupByRowLabel'] = settings['groupByRowLabel'] ? true : false;
78 settings['timeline']['colorByRowLabel'] = settings['colorByRowLabel'] ? true : false;
79 settings['timeline']['showRowLabels'] = settings['showRowLabels'] ? true : false;
80 if(settings['singleColor'] != '') {
81 settings['timeline']['singleColor'] = settings['singleColor'];
82 }
83 break;
84 case 'combo':
85 if (settings.series) {
86 for (i in settings.series) {
87 if (settings.series[i]['type'] == '') {
88 delete settings.series[i]['type'];
89 }
90 if (settings.series[i]['color'] == '') {
91 delete settings.series[i]['color'];
92 }
93 }
94 }
95
96 if (settings.series && settings.legend && settings.legend.position == "left")
97 {
98 settings.targetAxisIndex = 1;
99 }
100 break;
101 default:
102 return;
103 }
104
105 if (series[0] && (series[0].type == 'date' || series[0].type == 'datetime')) {
106 axis = false;
107 switch (v.charts[id].type) {
108 case 'line':
109 case 'area':
110 case 'scatter':
111 case 'candlestick':
112 case 'column':
113 axis = settings.hAxis;
114 break;
115 case 'bar':
116 axis = settings.vAxis;
117 break;
118 }
119
120 if (axis) {
121 for (property in axis.viewWindow) {
122 date = new Date(axis.viewWindow[property]);
123 if (Object.prototype.toString.call(date) === "[object Date]") {
124 if (!isNaN(date.getTime())) {
125 axis.viewWindow[property] = date;
126 continue;
127 }
128 }
129
130 delete axis.viewWindow[property];
131 }
132 }
133 }
134
135 if(settings.hAxis){
136 if(settings.hAxis.textStyle && settings.hAxis.textStyle != ''){
137 settings.hAxis.textStyle = {color: settings.hAxis.textStyle};
138 }
139 }
140
141 if(settings.vAxis){
142 if(settings.vAxis.textStyle && settings.vAxis.textStyle != ''){
143 settings.vAxis.textStyle = {color: settings.vAxis.textStyle};
144 }
145 }
146
147 for (i = 0; i < data.length; i++) {
148 row = [];
149 for (j = 0; j < series.length; j++) {
150 if (series[j].type == 'date' || series[j].type == 'datetime') {
151 date = new Date(data[i][j]);
152 data[i][j] = null;
153 if (Object.prototype.toString.call(date) === "[object Date]") {
154 if (!isNaN(date.getTime())) {
155 data[i][j] = date;
156 }
157 }
158 }
159 row.push(data[i][j]);
160 }
161 table.addRow(row);
162 }
163
164 if (settings.series) {
165 for (i = 0; i < settings.series.length; i++) {
166 format = settings.series[i].format;
167 if (!format || format == '') {
168 continue;
169 }
170
171 formatter = null;
172 switch (series[i + 1].type) {
173 case 'number':
174 formatter = new g.visualization.NumberFormat({pattern: format});
175 break;
176 case 'date':
177 case 'datetime':
178 case 'timeofday':
179 formatter = new g.visualization.DateFormat({pattern: format});
180 break;
181 }
182
183 if (formatter) {
184 formatter.format(table, i + 1);
185 }
186 }
187 }
188
189 render.draw(table, settings);
190 };
191
192 v.render = function() {
193 for (var id in (v.charts || {})) {
194 v.renderChart(id);
195 }
196 };
197
198 g.charts.load("current", {packages: ["corechart", "geochart", "gauge", "table", "timeline"]});
199 g.charts.setOnLoadCallback(function() {
200 gv = g.visualization;
201 v.render();
202 });
203 })(visualizer, google);
204
205 (function($, v) {
206 var resizeTimeout;
207
208 $(document).ready(function() {
209 $(window).resize(function() {
210 clearTimeout(resizeTimeout);
211 resizeTimeout = setTimeout(v.render, 100);
212 });
213
214 resizeHiddenContainers();
215 });
216
217 function resizeHiddenContainers(){
218 $(".visualizer-front").parents().each(function(){
219 if(!$(this).is(":visible")){
220 $(this).addClass("visualizer-hidden-container");
221 }
222 });
223
224 var mutateObserver = new MutationObserver(function(records) {
225 records.forEach(function(record) {
226 if(record.attributeName == "style" || record.attributeName == "class"){
227 var element = $(record.target);
228 var displayStyle = window.getComputedStyle(element[0]).getPropertyValue("display");
229 if(element.hasClass("visualizer-hidden-container-resized") || displayStyle == "none") return;
230 element.addClass("visualizer-hidden-container-resized").find(".visualizer-front").resize();
231 }
232 });
233 });
234
235 $('.visualizer-hidden-container').each(function(){
236 mutateObserver.observe($(this)[0], {attributes: true});
237 });
238 }
239
240 })(jQuery, visualizer);