PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 2.0.2
Visualizer – Tables & Charts Manager with Built-in AI Generator v2.0.2
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 +123 -25 3.10.112.0.2 View file →
@@ -1,9 +1,9 @@
1 1 /*jshint scripturl:true*/
2 2 /* global google */
3 3 /* global visualizer */
4 4 /* global showNotice */
5 -(function($, wpm, visualizer) {
5 +(function($, wpm) {
6 6 var libraryWidth, libraryHeight, wpmv, wpmV, wpmvv, wpmvvl, wpmvvb, l10n;
7 7
8 8 wpmv = wpm.view;
9 9 wpmV = wpm.View;
@@ -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,128 @@
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).parent().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 + chart = type === 'gauge' ? 'Gauge' : type.charAt(0).toUpperCase() + type.slice(1) + 'Chart';
63 + chart = new gv[chart](self.el);
64 +
65 + switch (type) {
66 + case 'pie':
67 + if (settings.slices) {
68 + for (i in settings.slices) {
69 + if (settings.slices[i]['color'] === '') {
70 + delete settings.slices[i]['color'];
71 + }
72 + }
73 + }
74 + break;
75 + case 'line':
76 + case 'bar':
77 + case 'column':
78 + case 'area':
79 + case 'scatter':
80 + case 'candlestick':
81 + if (settings.series) {
82 + for (i in settings.series) {
83 + if (settings.series[i]['color'] === '') {
84 + delete settings.series[i]['color'];
85 + }
86 + }
87 + }
88 + break;
89 + case 'geo':
90 + if (settings.region !== undefined && settings.region.replace(/^\s+|\s+$/g, '') === '') {
91 + settings['region'] = 'world';
92 + }
93 + break;
94 + case 'gauge':
95 + break;
96 + default:
97 + return;
98 + }
99 +
100 + if (series[0] && (series[0].type === 'date' || series[0].type === 'datetime')) {
101 + axis = false;
102 + switch (type) {
103 + case 'line':
104 + case 'area':
105 + case 'scatter':
106 + case 'candlestick':
107 + case 'column':
108 + axis = settings.hAxis;
109 + break;
110 + case 'bar':
111 + axis = settings.vAxis;
112 + break;
113 + }
114 +
115 + if (axis) {
116 + for (property in axis.viewWindow) {
117 + date = new Date(axis.viewWindow[property]);
118 + if (Object.prototype.toString.call(date) === "[object Date]") {
119 + if (!isNaN(date.getTime())) {
120 + axis.viewWindow[property] = date;
121 + continue;
122 + }
123 + }
124 +
125 + delete axis.viewWindow[property];
126 + }
127 + }
128 + }
129 +
130 + for (i = 0; i < data.length; i++) {
131 + row = [];
132 + for (j = 0; j < series.length; j++) {
133 + if (series[j].type === 'date' || series[j].type === 'datetime') {
134 + date = new Date(data[i][j]);
135 + data[i][j] = null;
136 + if (Object.prototype.toString.call(date) === "[object Date]") {
137 + if (!isNaN(date.getTime())) {
138 + data[i][j] = date;
139 + }
140 + }
141 + }
142 + row.push(data[i][j]);
143 + }
144 + table.addRow(row);
145 + }
146 +
147 + if (settings.series) {
148 + for (i = 0; i < settings.series.length; i++) {
149 + format = settings.series[i].format;
150 + if (!format || format === '') {
151 + continue;
152 + }
153 +
154 + formatter = null;
155 + switch (series[i + 1].type) {
156 + case 'number':
157 + formatter = new gv.NumberFormat({pattern: format});
158 + break;
159 + case 'date':
160 + case 'datetime':
161 + case 'timeofday':
162 + formatter = new gv.DateFormat({pattern: format});
163 + break;
164 + }
165 +
166 + if (formatter) {
167 + formatter.format(table, i + 1);
168 + }
169 + }
170 + }
171 +
172 + chart.draw(table, settings);
63 173 }
64 174 });
65 175
66 176 /**
@@ -147,20 +257,8 @@
147 257 paginationView.render();
148 258 }
149 259
150 260 self.renderCollection();
151 - $('.visualizer-library-chart').css('position', 'relative')
152 - .append($(
153 - // jshint ignore:start
154 - '<div class="visualizer-chart-bg"></div>'
155 - + '<div class="visualizer-chart-insert-bg">'
156 - + '<button class="button button-primary visualizer-library-chart-insert">' + visualizer.i10n.insert + '</button>'
157 - + '</div>'
158 - // jshint ignore:end
159 - ))
160 - .on('mouseover', function(){
161 - $(this).addClass('hover');
162 - });
163 261 content.unlock();
164 262 }
165 263 }
166 264 });
@@ -354,9 +452,9 @@
354 452 onPageChange: function(e) {
355 453 this.controller.trigger('visualizer:library:page', $(e.target).data('page'));
356 454 }
357 455 });
358 -})(jQuery, wp.media, visualizer);
456 +})(jQuery, wp.media);
359 457
360 458 (function($) {
361 459 $.fn.lock = function() {
362 460 $(this).each(function() {