PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.1.2
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.1.2
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 / preview.js

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

101 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /* global visualizer */
2 /* global console */
3 (function($, v) {
4 var timeout;
5
6 $(document).ready(function() {
7 $('#settings-button').click(function() {
8 $('#settings-form').submit();
9 });
10
11 function updateChart() {
12 clearTimeout(timeout);
13 timeout = setTimeout(function() {
14 var settings = $('#settings-form').serializeObject();
15
16 delete settings['width'];
17 delete settings['height'];
18
19 v.charts.canvas.settings = settings;
20 v.update();
21 }, 1000);
22 }
23
24 function validateJSON() {
25 $('#visualizer-error-manual').remove();
26 try{
27 var options = JSON.parse($(this).val());
28 }catch(error){
29 $('<div class="visualizer-error" id="visualizer-error-manual">Invalid JSON: ' + error + '</div>').insertAfter($(this));
30 }
31 }
32
33 $('.control-text').change(updateChart).keyup(updateChart);
34 $('.control-select, .control-checkbox, .control-check').change(updateChart);
35 $('.color-picker-hex').wpColorPicker({
36 change: updateChart,
37 clear: updateChart
38 });
39 $('textarea[name="manual"]').change(validateJSON).keyup(validateJSON);
40
41 });
42 })(jQuery, visualizer);
43
44 (function($) {
45 $.fn.serializeObject = function() {
46 var self = this,
47 json = {},
48 push_counters = {},
49 patterns = {
50 "validate": /^[a-zA-Z][a-zA-Z0-9_]*(?:\[(?:\d*|[a-zA-Z0-9_]+)\])*$/,
51 "key": /[a-zA-Z0-9_]+|(?=\[\])/g,
52 "push": /^$/,
53 "fixed": /^\d+$/,
54 "named": /^[a-zA-Z0-9_]+$/
55 };
56
57 this.build = function(base, key, value) {
58 base[key] = value;
59 return base;
60 };
61
62 this.push_counter = function(key) {
63 if (push_counters[key] === undefined) {
64 push_counters[key] = 0;
65 }
66 return push_counters[key]++;
67 };
68
69 $.each($(this).serializeArray(), function() {
70 // skip invalid keys
71 if (!patterns.validate.test(this.name)) {
72 return;
73 }
74
75 var k,
76 keys = this.name.match(patterns.key),
77 merge = this.value,
78 reverse_key = this.name;
79
80 while ((k = keys.pop()) !== undefined) {
81 // adjust reverse_key
82 reverse_key = reverse_key.replace(new RegExp("\\[" + k + "\\]$"), '');
83
84 if (k.match(patterns.push)) {
85 // push
86 merge = self.build([], self.push_counter(reverse_key), merge);
87 } else if (k.match(patterns.fixed)) {
88 // fixed
89 merge = self.build([], k, merge);
90 } else if (k.match(patterns.named)) {
91 // named
92 merge = self.build({}, k, merge);
93 }
94 }
95
96 json = $.extend(true, json, merge);
97 });
98
99 return json;
100 };
101 })(jQuery);