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

152 lines 4.7 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 settings = JSON.stringify( settings ).replace( /<\/?[^>]+(>|$)/g, '' );
65 settings = JSON.parse( settings );
66 delete settings['width'];
67 delete settings['height'];
68
69 v.charts.canvas.settings = settings;
70 $('body').trigger('visualizer:render:currentchart:update', {visualizer: v});
71 vizSettingsHaveChanged(true);
72 }, 1500);
73 }
74
75 function validateJSON() {
76 $('#visualizer-error-manual').remove();
77 try{
78 var options = JSON.parse($(this).val());
79 }catch(error){
80 $('<div class="visualizer-error" id="visualizer-error-manual">Invalid JSON: ' + error + '</div>').insertAfter($(this));
81 }
82 }
83
84 $('.control-text').change(updateChart).keyup(updateChart);
85 $('.control-select, .control-checkbox, .control-check').change(updateChart);
86 $('.color-picker-hex').wpColorPicker({
87 change: updateChart,
88 clear: updateChart
89 });
90 $('textarea[name="manual"]').change(validateJSON).keyup(validateJSON);
91
92 });
93 })(jQuery, visualizer);
94
95 (function($) {
96 $.fn.serializeObject = function() {
97 var self = this,
98 json = {},
99 push_counters = {},
100 patterns = {
101 "validate": /^[a-zA-Z][a-zA-Z0-9_]*(?:\[(?:\d*|[a-zA-Z0-9_]+)\])*$/,
102 "key": /[a-zA-Z0-9_]+|(?=\[\])/g,
103 "push": /^$/,
104 "fixed": /^\d+$/,
105 "named": /^[a-zA-Z0-9_]+$/
106 };
107
108 this.build = function(base, key, value) {
109 base[key] = value;
110 return base;
111 };
112
113 this.push_counter = function(key) {
114 if (push_counters[key] === undefined) {
115 push_counters[key] = 0;
116 }
117 return push_counters[key]++;
118 };
119
120 $.each($(this).serializeArray(), function() {
121 // skip invalid keys
122 if (!patterns.validate.test(this.name)) {
123 return;
124 }
125
126 var k,
127 keys = this.name.match(patterns.key),
128 merge = this.value,
129 reverse_key = this.name;
130
131 while ((k = keys.pop()) !== undefined) {
132 // adjust reverse_key
133 reverse_key = reverse_key.replace(new RegExp("\\[" + k + "\\]$"), '');
134
135 if (k.match(patterns.push)) {
136 // push
137 merge = self.build([], self.push_counter(reverse_key), merge);
138 } else if (k.match(patterns.fixed)) {
139 // fixed
140 merge = self.build([], k, merge);
141 } else if (k.match(patterns.named)) {
142 // named
143 merge = self.build({}, k, merge);
144 }
145 }
146
147 json = $.extend(true, json, merge);
148 });
149
150 return json;
151 };
152 })(jQuery);