PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 2.1.9
Visualizer – Tables & Charts Manager with Built-in AI Generator v2.1.9
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.9, at js/render.js

256 lines 7.1 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 if(typeof(settings.hAxis.textStyle) === "string") {
143 settings.hAxis.textStyle = {color: settings.hAxis.textStyle};
144 }
145 }
146 }
147
148 if(settings.vAxis){
149 if(settings.vAxis.textStyle && settings.vAxis.textStyle !== ''){
150 if(typeof(settings.vAxis.textStyle) === "string") {
151 settings.vAxis.textStyle = {color: settings.vAxis.textStyle};
152 }
153 }
154 }
155
156 for (i = 0; i < data.length; i++) {
157 row = [];
158 for (j = 0; j < series.length; j++) {
159 if (series[j].type === 'date' || series[j].type === 'datetime') {
160 date = new Date(data[i][j]);
161 data[i][j] = null;
162 if (Object.prototype.toString.call(date) === "[object Date]") {
163 if (!isNaN(date.getTime())) {
164 data[i][j] = date;
165 }
166 }
167 }
168 row.push(data[i][j]);
169 }
170 table.addRow(row);
171 }
172
173 if (settings.series) {
174 for (i = 0; i < settings.series.length; i++) {
175 format = settings.series[i].format;
176 if (!format || format === '' || !series[i + 1]) {
177 continue;
178 }
179
180 formatter = null;
181 switch (series[i + 1].type) {
182 case 'number':
183 formatter = new g.visualization.NumberFormat({pattern: format});
184 break;
185 case 'date':
186 case 'datetime':
187 case 'timeofday':
188 formatter = new g.visualization.DateFormat({pattern: format});
189 break;
190 }
191
192 if (formatter) {
193 formatter.format(table, i + 1);
194 }
195 }
196 }
197
198 render.draw(table, settings);
199 };
200
201 v.render = function() {
202 for (var id in (v.charts || {})) {
203 v.renderChart(id);
204 }
205 };
206
207 g.charts.load("current", {packages: ["corechart", "geochart", "gauge", "table", "timeline"], mapsApiKey: v.map_api_key});
208 g.charts.setOnLoadCallback(function() {
209 gv = g.visualization;
210 v.render();
211 });
212 })(visualizer, google);
213
214 (function($, v) {
215 var resizeTimeout;
216
217 $(document).ready(function() {
218 $(window).resize(function() {
219 clearTimeout(resizeTimeout);
220 resizeTimeout = setTimeout(v.render, 100);
221 });
222
223 resizeHiddenContainers(true);
224 });
225
226 $(window).load(function(){
227 resizeHiddenContainers(true);
228 });
229
230 function resizeHiddenContainers(everytime){
231 $(".visualizer-front").parents().each(function(){
232 if(!$(this).is(":visible") && !$(this).hasClass("visualizer-hidden-container")){
233 $(this).addClass("visualizer-hidden-container");
234 }
235 });
236
237 var mutateObserver = new MutationObserver(function(records) {
238 records.forEach(function(record) {
239 if(record.attributeName === "style" || record.attributeName === "class"){
240 var element = $(record.target);
241 var displayStyle = window.getComputedStyle(element[0]).getPropertyValue("display");
242 if(element.hasClass("visualizer-hidden-container-resized") || displayStyle === "none") { return ; }
243 element.find(".visualizer-front").resize();
244 if(!everytime) {
245 element.addClass("visualizer-hidden-container-resized");
246 }
247 }
248 });
249 });
250
251 $('.visualizer-hidden-container').each(function(){
252 mutateObserver.observe($(this)[0], {attributes: true});
253 });
254 }
255
256 })(jQuery, visualizer);