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

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

151 lines 4.6 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 // Update google chart filter control.
29 window.vizUpdateFilterControl = function() {
30 $( '#control_wrapper_canvas' ).removeClass( 'no-filter' );
31 var controlsOpt = $( '.vz-controls-opt' ).map(
32 function() {
33 var val = $(this).val();
34 return '' !== val && 'false' !== val ? val : false ;
35 }
36 ).get();
37 controlsOpt = controlsOpt.filter( function(el) { return el; } );
38 if ( controlsOpt.length === 0 ) {
39 $( '#control_wrapper_canvas' ).addClass( 'no-filter' ).html('');
40 }
41 }
42
43 $('#settings-button').click(function() {
44 $('#settings-form').submit();
45 });
46
47 // this portion captures if the settings have changed so that tabs can handle that information.
48 var viz_settings_have_changed = false;
49
50 window.vizHaveSettingsChanged = function(){
51 return viz_settings_have_changed;
52 };
53
54 window.vizSettingsHaveChanged = function(value){
55 viz_settings_have_changed = value;
56 };
57 // this portion captures if the settings have changed so that tabs can handle that information.
58
59 function updateChart() {
60 vizUpdateFilterControl();
61 clearTimeout(timeout);
62 timeout = setTimeout(function() {
63 var settings = $('#settings-form').serializeObject();
64
65 delete settings['width'];
66 delete settings['height'];
67
68 v.charts.canvas.settings = settings;
69 $('body').trigger('visualizer:render:currentchart:update', {visualizer: v});
70 vizSettingsHaveChanged(true);
71 }, 1500);
72 }
73
74 function validateJSON() {
75 $('#visualizer-error-manual').remove();
76 try{
77 var options = JSON.parse($(this).val());
78 }catch(error){
79 $('<div class="visualizer-error" id="visualizer-error-manual">Invalid JSON: ' + error + '</div>').insertAfter($(this));
80 }
81 }
82
83 $('.control-text').change(updateChart).keyup(updateChart);
84 $('.control-select, .control-checkbox, .control-check').change(updateChart);
85 $('.color-picker-hex').wpColorPicker({
86 change: updateChart,
87 clear: updateChart
88 });
89 $('textarea[name="manual"]').change(validateJSON).keyup(validateJSON);
90
91 });
92 })(jQuery, visualizer);
93
94 (function($) {
95 $.fn.serializeObject = function() {
96 var self = this,
97 json = {},
98 push_counters = {},
99 patterns = {
100 "validate": /^[a-zA-Z][a-zA-Z0-9_]*(?:\[(?:\d*|[a-zA-Z0-9_]+)\])*$/,
101 "key": /[a-zA-Z0-9_]+|(?=\[\])/g,
102 "push": /^$/,
103 "fixed": /^\d+$/,
104 "named": /^[a-zA-Z0-9_]+$/
105 };
106
107 this.build = function(base, key, value) {
108 base[key] = value;
109 return base;
110 };
111
112 this.push_counter = function(key) {
113 if (push_counters[key] === undefined) {
114 push_counters[key] = 0;
115 }
116 return push_counters[key]++;
117 };
118
119 $.each($(this).serializeArray(), function() {
120 // skip invalid keys
121 if (!patterns.validate.test(this.name)) {
122 return;
123 }
124
125 var k,
126 keys = this.name.match(patterns.key),
127 merge = this.value,
128 reverse_key = this.name;
129
130 while ((k = keys.pop()) !== undefined) {
131 // adjust reverse_key
132 reverse_key = reverse_key.replace(new RegExp("\\[" + k + "\\]$"), '');
133
134 if (k.match(patterns.push)) {
135 // push
136 merge = self.build([], self.push_counter(reverse_key), merge);
137 } else if (k.match(patterns.fixed)) {
138 // fixed
139 merge = self.build([], k, merge);
140 } else if (k.match(patterns.named)) {
141 // named
142 merge = self.build({}, k, merge);
143 }
144 }
145
146 json = $.extend(true, json, merge);
147 });
148
149 return json;
150 };
151 })(jQuery);