PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.0.10
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.0.10
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/media/view.js +132 -11 3.1.03.0.10 View file →
@@ -38,11 +38,12 @@
38 38 wpmV.apply(this, arguments);
39 39 },
40 40
41 41 render: function() {
42 - var self, model, chart;
42 + var self, model, chart, gv, type, series, data, table, settings, i, j, row, date, format, formatter, axis, property;
43 43
44 44 self = this;
45 + gv = google.visualization;
45 46 model = self.model;
46 47
47 48 self.$el
48 49 .width(self.options.width)
@@ -48,19 +49,139 @@
48 49 .width(self.options.width)
49 50 .height(self.options.height)
50 51 .css('background-image', 'none');
51 52
52 - chart = {};
53 - chart.type = model.get('type');
54 - chart.series = model.get('series');
55 - chart.data = model.get('data');
56 - chart.library = model.get('library');
57 - chart.settings = model.get('settings');
58 - chart.settings.width = self.options.width;
59 - chart.settings.height = self.options.height;
60 - $('#' + self.id).append(model.get('css'));
53 + type = model.get('type');
54 + series = model.get('series');
55 + data = model.get('data');
56 + settings = model.get('settings');
61 57
62 - $('body').trigger('visualizer:render:specificchart:start', {id: self.id, chart: chart, v: {page_type: 'post'}} );
58 + settings.width = self.options.width;
59 + settings.height = self.options.height;
60 +
61 + table = new gv.DataTable({cols: series});
62 +
63 + switch (type) {
64 + case "gauge":
65 + case "table":
66 + case "timeline":
67 + chart = type.charAt(0).toUpperCase() + type.slice(1);
68 + break;
69 + default:
70 + chart = type.charAt(0).toUpperCase() + type.slice(1) + 'Chart';
71 + break;
72 + }
73 +
74 + chart = new gv[chart](self.el);
75 +
76 + switch (type) {
77 + case 'pie':
78 + if (settings.slices) {
79 + for (i in settings.slices) {
80 + if (settings.slices[i]['color'] === '') {
81 + delete settings.slices[i]['color'];
82 + }
83 + }
84 + }
85 + break;
86 + case 'line':
87 + case 'bar':
88 + case 'column':
89 + case 'area':
90 + case 'scatter':
91 + case 'candlestick':
92 + if (settings.series) {
93 + for (i in settings.series) {
94 + if (settings.series[i]['color'] === '') {
95 + delete settings.series[i]['color'];
96 + }
97 + }
98 + }
99 + break;
100 + case 'geo':
101 + if (settings.region !== undefined && settings.region.replace(/^\s+|\s+$/g, '') === '') {
102 + settings['region'] = 'world';
103 + }
104 + break;
105 + case 'gauge':
106 + break;
107 + default:
108 + return;
109 + }
110 +
111 + if (series[0] && (series[0].type === 'date' || series[0].type === 'datetime')) {
112 + axis = false;
113 + switch (type) {
114 + case 'line':
115 + case 'area':
116 + case 'scatter':
117 + case 'candlestick':
118 + case 'column':
119 + axis = settings.hAxis;
120 + break;
121 + case 'bar':
122 + axis = settings.vAxis;
123 + break;
124 + }
125 +
126 + if (axis) {
127 + for (property in axis.viewWindow) {
128 + date = new Date(axis.viewWindow[property]);
129 + if (Object.prototype.toString.call(date) === "[object Date]") {
130 + if (!isNaN(date.getTime())) {
131 + axis.viewWindow[property] = date;
132 + continue;
133 + }
134 + }
135 +
136 + delete axis.viewWindow[property];
137 + }
138 + }
139 + }
140 +
141 + for (i = 0; i < data.length; i++) {
142 + row = [];
143 + for (j = 0; j < series.length; j++) {
144 + if (series[j].type === 'date' || series[j].type === 'datetime') {
145 + date = new Date(data[i][j]);
146 + data[i][j] = null;
147 + if (Object.prototype.toString.call(date) === "[object Date]") {
148 + if (!isNaN(date.getTime())) {
149 + data[i][j] = date;
150 + }
151 + }
152 + }
153 + row.push(data[i][j]);
154 + }
155 + table.addRow(row);
156 + }
157 +
158 + if (settings.series) {
159 + for (i = 0; i < settings.series.length; i++) {
160 + format = settings.series[i].format;
161 + if (!format || format === '') {
162 + continue;
163 + }
164 +
165 + formatter = null;
166 + switch (series[i + 1].type) {
167 + case 'number':
168 + formatter = new gv.NumberFormat({pattern: format});
169 + break;
170 + case 'date':
171 + case 'datetime':
172 + case 'timeofday':
173 + formatter = new gv.DateFormat({pattern: format});
174 + break;
175 + }
176 +
177 + if (formatter) {
178 + formatter.format(table, i + 1);
179 + }
180 + }
181 + }
182 +
183 + chart.draw(table, settings);
63 184 }
64 185 });
65 186
66 187 /**