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

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