PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 2.1.8
Visualizer – Tables & Charts Manager with Built-in AI Generator v2.1.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
visualizer / js / render.js

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

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