PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.4.2
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.4.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.4.2, at js/preview.js

118 lines 3.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 // when data is impported using csv/url, update the hidden data and the advanced settings sidebar.
8 // editor and sidebar are both JSON objects
9 window.updateHTML = function( editor, sidebar ) {
10 $('.viz-simple-editor').remove();
11 $('#content').append(editor.html);
12 $('#settings-form .viz-group').remove();
13 $('#settings-form').append(sidebar.html);
14
15 $('#settings-form .control-text').change(updateChart).keyup(updateChart);
16 $('#settings-form .control-select, #settings-form .control-checkbox, #settings-form .control-check').change(updateChart);
17 $('#settings-form .color-picker-hex').wpColorPicker({
18 change: updateChart,
19 clear: updateChart
20 });
21 $('#settings-form textarea[name="manual"]').change(validateJSON).keyup(validateJSON);
22 };
23
24 $('#settings-button').click(function() {
25 $('#settings-form').submit();
26 });
27
28 function updateChart() {
29 clearTimeout(timeout);
30 timeout = setTimeout(function() {
31 var settings = $('#settings-form').serializeObject();
32
33 delete settings['width'];
34 delete settings['height'];
35
36 v.charts.canvas.settings = settings;
37 $('body').trigger('visualizer:render:currentchart:update', {visualizer: v});
38 }, 1000);
39 }
40
41 function validateJSON() {
42 $('#visualizer-error-manual').remove();
43 try{
44 var options = JSON.parse($(this).val());
45 }catch(error){
46 $('<div class="visualizer-error" id="visualizer-error-manual">Invalid JSON: ' + error + '</div>').insertAfter($(this));
47 }
48 }
49
50 $('.control-text').change(updateChart).keyup(updateChart);
51 $('.control-select, .control-checkbox, .control-check').change(updateChart);
52 $('.color-picker-hex').wpColorPicker({
53 change: updateChart,
54 clear: updateChart
55 });
56 $('textarea[name="manual"]').change(validateJSON).keyup(validateJSON);
57
58 });
59 })(jQuery, visualizer);
60
61 (function($) {
62 $.fn.serializeObject = function() {
63 var self = this,
64 json = {},
65 push_counters = {},
66 patterns = {
67 "validate": /^[a-zA-Z][a-zA-Z0-9_]*(?:\[(?:\d*|[a-zA-Z0-9_]+)\])*$/,
68 "key": /[a-zA-Z0-9_]+|(?=\[\])/g,
69 "push": /^$/,
70 "fixed": /^\d+$/,
71 "named": /^[a-zA-Z0-9_]+$/
72 };
73
74 this.build = function(base, key, value) {
75 base[key] = value;
76 return base;
77 };
78
79 this.push_counter = function(key) {
80 if (push_counters[key] === undefined) {
81 push_counters[key] = 0;
82 }
83 return push_counters[key]++;
84 };
85
86 $.each($(this).serializeArray(), function() {
87 // skip invalid keys
88 if (!patterns.validate.test(this.name)) {
89 return;
90 }
91
92 var k,
93 keys = this.name.match(patterns.key),
94 merge = this.value,
95 reverse_key = this.name;
96
97 while ((k = keys.pop()) !== undefined) {
98 // adjust reverse_key
99 reverse_key = reverse_key.replace(new RegExp("\\[" + k + "\\]$"), '');
100
101 if (k.match(patterns.push)) {
102 // push
103 merge = self.build([], self.push_counter(reverse_key), merge);
104 } else if (k.match(patterns.fixed)) {
105 // fixed
106 merge = self.build([], k, merge);
107 } else if (k.match(patterns.named)) {
108 // named
109 merge = self.build({}, k, merge);
110 }
111 }
112
113 json = $.extend(true, json, merge);
114 });
115
116 return json;
117 };
118 })(jQuery);