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

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