PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 1.1.2
Visualizer – Tables & Charts Manager with Built-in AI Generator v1.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
← All changes | js/frame.js +55 -634 3.10.131.1.2 View file →
@@ -1,642 +1,63 @@
1 -/* global prompt */
2 -/* global visualizer */
3 -/* global alert */
4 -/* global confirm */
5 -/* global ajaxurl */
6 -/* global CodeMirror */
7 -/* global vizHaveSettingsChanged */
1 +(function($) {
2 + $(document).ready(function() {
3 + $('.type-radio').change(function() {
4 + $('.type-label-selected').removeClass('type-label-selected');
5 + $(this).parent().addClass('type-label-selected');
6 + });
8 7
9 -(function ($) {
10 - $(window).on('load', function(){
11 - // scroll to the selected chart type.
12 - if($('label.type-label.type-label-selected').length > 0) {
13 - $('label.type-label.type-label-selected')[0].scrollIntoView();
14 - }
15 - });
8 + $('.group-title').click(function() {
9 + var parent = $(this).parent();
16 10
17 - $(document).ready(function () {
18 - onReady();
19 - });
11 + if (parent.hasClass('open')) {
12 + parent.removeClass('open');
13 + } else {
14 + $('.group.open').removeClass('open');
15 + parent.addClass('open');
16 + }
17 + });
20 18
21 - function initTabs(){
22 - $( "#sidebar" ).lock();
23 - $( "#viz-tabs" ).tabs({
24 - create: function( event, ui ) {
25 - $(this).addClass('done');
26 - $( "#sidebar" ).unlock();
27 - },
28 - beforeActivate: function( event, ui ) {
29 - // if settings have changed in tab #2 and tab #1 is being activated, warn the user.
30 - if(vizHaveSettingsChanged() && ui.newTab.find( 'a' ).attr( 'id' ).includes('viz-tab-basic')){
31 - return confirm(visualizer.l10n.save_settings);
32 - }
33 - }
34 - });
35 - }
19 + $('#remote-file').click(function() {
20 + var url = $.trim(prompt(visualizer.l10n.remotecsv_prompt));
36 21
37 - function onReady() {
38 - initTabs();
22 + if (url != '') {
23 + if(/^([a-z]([a-z]|\d|\+|-|\.)*):(\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?((\[(|(v[\da-f]{1,}\.(([a-z]|\d|-|\.|_|~)|[!\$&'\(\)\*\+,;=]|:)+))\])|((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=])*)(:\d*)?)(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*|(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)){0})(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(url)) {
24 + $('#remote-data').val(url);
25 + $('#csv-file').val('');
26 + $('#canvas').lock();
27 + $('#csv-form').submit();
28 + } else {
29 + alert(visualizer.l10n.invalid_source);
30 + }
31 + }
32 + });
39 33
40 - // open the correct source tab/sub-tab.
41 - var source = $('#visualizer-chart-id').attr('data-chart-source');
42 - $('li.viz-group.' + source).addClass('open');
43 - $('li.viz-group.' + source + ' span.viz-section-title.' + source).addClass('open');
44 - $('li.viz-group.' + source + ' span.viz-section-title.' + source + '.open').parent().find('div.viz-section-items').show();
34 + $('#csv-file').change(function() {
35 + if ($.trim($(this).val()) != '') {
36 + $('#remote-data').val('');
37 + $('#canvas').lock();
38 + $('#csv-form').submit();
39 + }
40 + });
45 41
46 - init_permissions();
42 + $('#thehole').load(function() {
43 + $('#canvas').unlock();
44 + });
47 45
48 - if(typeof visualizer !== 'undefined' && visualizer.is_pro) {
49 - init_db_import();
50 - init_filter_import();
51 - }
46 + $('.section-title').click(function() {
47 + $(this).toggleClass('open').parent().find('.section-items').toggle();
48 + });
52 49
53 - init_json_import();
54 -
55 - init_editor_table();
56 -
57 - // update the manual configuation link to point to the correct chart type.
58 - var type = $('#visualizer-chart-id').attr('data-chart-type');
59 - var chart_type_in_api_link = type + 'chart';
60 - switch (type) {
61 - case "gauge":
62 - case "table":
63 - case "timeline":
64 - chart_type_in_api_link = type;
65 - break;
66 - }
67 -
68 - if($('span.viz-gvlink').length > 0) {
69 - $('span.viz-gvlink').html($('span.viz-gvlink').html().replace('?', chart_type_in_api_link));
70 - }
71 -
72 - $('.type-radio').change(function () {
73 - $('.type-label-selected').removeClass('type-label-selected');
74 - $(this).parent().addClass('type-label-selected');
75 - });
76 -
77 - // collapse other open sections of this group
78 - $(document).on('click', '.viz-group-title', function () {
79 - var parent = $(this).parent();
80 -
81 - if (parent.hasClass('open')) {
82 - parent.removeClass('open');
83 - } else {
84 - parent.parent().find('.viz-group.open').removeClass('open');
85 - parent.addClass('open');
86 - }
87 -
88 - /*
89 - * if the user wants to perform an action and click that tab to change the source
90 - * and the chart is no longer showing because that particular LHS screen is showing
91 - * e.g. create parameters, import json, db query box etc.
92 - * we need to make sure we cancel the current process WITHOUT saving
93 - * and then show the chart as it was
94 - * let's close the LHS window and show the chart that is hidden
95 - */
96 - $('body').trigger('visualizer:change:action');
97 - });
98 -
99 - // collapse other open subsections of this section
100 - $(document).on('click', '.viz-section-title', function () {
101 - var grandparent = $(this).parent().parent();
102 - grandparent.find('.viz-section-title.open ~ .viz-section-items').hide();
103 - grandparent.find('.viz-section-title.open').removeClass('open');
104 - });
105 -
106 - $('#view-remote-file').click(function () {
107 - var url = $(this).parent().find('#vz-schedule-url').val();
108 -
109 - if (url !== '') {
110 - if (url.indexOf('localhost') !== -1 || /^([a-z]([a-z]|\d|\+|-|\.)*):(\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?((\[(|(v[\da-f]{1,}\.(([a-z]|\d|-|\.|_|~)|[!\$&'\(\)\*\+,;=]|:)+))\])|((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=])*)(:\d*)?)(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*|(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)|((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)){0})(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(url)) {
111 - if (url.substr(url.length - 8) === '/pubhtml') {
112 - url = url.substring(0, url.length - 8) + '/export?format=csv';
113 - }
114 -
115 - $('#canvas').lock();
116 - $(this).parent().submit();
117 - } else {
118 - alert(visualizer.l10n.invalid_source);
119 - }
120 - }
121 - });
122 -
123 - $('#vz-import-file').click(function (e) {
124 - e.preventDefault();
125 - if ($.trim($(this).parent().find("#csv-file").val()) !== '') {
126 - $('#canvas').lock();
127 - $(this).parent().submit();
128 - }
129 - });
130 -
131 - $( window ).on( 'load', function() {
132 - $('#canvas').unlock();
133 - } );
134 -
135 - $(document).on('click', '.viz-section-title', function () {
136 - $(this).toggleClass('open').parent().find('.viz-section-items').toggle();
137 - });
138 -
139 - $(document).on('click', '.more-info', function () {
140 - $(this).parent().find('.viz-section-description:first').toggle();
141 - return false;
142 - });
143 -
144 - $('#cancel-button').click(function () {
145 - $('#cancel-form').submit();
146 - });
147 -
148 - init_type_vs_library();
149 -
150 - $('.viz-abort').on('click', function(e){
151 - e.preventDefault();
152 - window.parent.postMessage('visualizer:mediaframe:close', '*');
153 - });
154 -
155 - }
156 -
157 - function init_type_vs_library() {
158 - var $data = $('select.viz-select-library').attr('data-type-vs-library');
159 - if(typeof $data === 'undefined' || $data.length === 0){
160 - return;
161 - }
162 - var $typeVsLibrary = JSON.parse( $('select.viz-select-library').attr('data-type-vs-library') );
163 - // disable all unsupported libraries for the chart type.
164 - $('input.type-radio').on('click', function(){
165 - enable_libraries_for($(this).val(), $typeVsLibrary);
166 - });
167 -
168 - enable_libraries_for($('input.type-radio:checked').val(), $typeVsLibrary);
169 - }
170 -
171 - function enable_libraries_for($type, $typeVsLibrary) {
172 - $('select.viz-select-library option').addClass('disabled').attr('disabled', 'disabled');
173 - var $libs = $typeVsLibrary[$type];
174 - $.each($libs, function( i, $lib ) {
175 - $('select.viz-select-library option[value="' + $lib + '"]').removeClass('disabled').removeAttr('disabled');
176 - });
177 - $('select.viz-select-library').val( $('select.viz-select-library option:not(.disabled)').val() );
178 - }
179 -
180 - function init_permissions(){
181 - $('.visualizer-permission').chosen({
182 - width : '50%',
183 - search_contains : true
184 - });
185 -
186 - $('.visualizer-permission-type').each(function(x, y){
187 - var type = $(y).attr('data-visualizer-permission-type');
188 - var child = $('.visualizer-permission-' + type + '-specific');
189 - if($(y).val() === 'all'){
190 - child.next('div.chosen-container').hide();
191 - return;
192 - }
193 - });
194 -
195 - $('.visualizer-permission-type').on('change', function(evt, params) {
196 - var type = $(this).attr('data-visualizer-permission-type');
197 - var child = $('.visualizer-permission-' + type + '-specific');
198 - child.empty();
199 - if(params.selected === 'all'){
200 - child.next('div.chosen-container').hide();
201 - return;
202 - } else {
203 - child.next('div.chosen-container').show();
204 - }
205 - child.append('<option value="">' + visualizer.l10n['loading'] + '</option>').trigger('chosen:updated');
206 - $.ajax({
207 - url : visualizer.ajax['url'],
208 - method : 'post',
209 - data : {
210 - 'action' : visualizer.ajax['actions']['permissions'],
211 - 'nonce' : visualizer.ajax['nonces']['permissions'],
212 - 'type' : params.selected
213 - },
214 - success : function(d, textStatus, XMLHttpRequest){
215 - if(d.success) {
216 - child.empty();
217 - $.each(d.data, function(k, v){
218 - child.append('<option value="' + k + '">' + v + '</option>');
219 - });
220 - child.trigger('chosen:updated');
221 - }
222 - }
223 - });
224 - });
225 - }
226 -
227 - // https://codemirror.net/
228 - function init_db_import_component(){
229 - var table_columns = visualizer.db_query.tables;
230 - var code_mirror = wp.CodeMirror || CodeMirror;
231 - var cm = code_mirror.fromTextArea($('.visualizer-db-query').get(0), {
232 - value: $('.visualizer-db-query').val(),
233 - autofocus: true,
234 - mode: 'text/x-mysql',
235 - lineWrapping: true,
236 - dragDrop: false,
237 - matchBrackets: true,
238 - autoCloseBrackets: true,
239 - extraKeys: {"Ctrl-Space": "autocomplete"},
240 - hintOptions: { tables: table_columns }
241 - });
242 -
243 - // force refresh so that the query shows on first time load. Otherwise you have to click on the editor for it to show.
244 - $('body').on('visualizer:db:query:focus', function(event, data){
245 - cm.refresh();
246 - });
247 -
248 - cm.focus();
249 -
250 - // update text area.
251 - cm.on('inputRead', function(x, y){
252 - cm.save();
253 - });
254 -
255 - // backspace and delete do not register so the text box does not get empty if the entire query is deleted
256 - // from the editor. Let's force this.
257 - $('body').on('visualizer:db:query:update', function(event, data){
258 - cm.save();
259 - });
260 -
261 - // clear the editor.
262 - $('body').on('visualizer:db:query:setvalue', function(event, data){
263 - cm.setValue(data.value);
264 - cm.clearHistory();
265 - cm.refresh();
266 - });
267 -
268 - // set an option at runtime?
269 - $('body').on('visualizer:db:query:changeoption', function(event, data){
270 - cm.setOption(data.name, data.value);
271 - });
272 - }
273 -
274 - function init_filter_import() {
275 - $( '#db-filter-save-button' ).on( 'click', function(){
276 - $('#vz-filter-wizard').submit();
277 - });
278 - }
279 -
280 - function init_db_import(){
281 - $( '#visualizer-db-query' ).css("z-index", "-1").hide();
282 -
283 - init_db_import_component();
284 -
285 - $('#visualizer-query-fetch').on('click', function(e){
286 -
287 - $('body').trigger('visualizer:db:query:update', {});
288 - if($('.visualizer-db-query').val() === ''){
289 - return;
290 - }
291 -
292 - start_ajax($('#visualizer-db-query'));
293 - $('.db-wizard-results').empty();
294 - $('.db-wizard-error').empty();
295 - $.ajax({
296 - url : ajaxurl,
297 - method : 'post',
298 - data : {
299 - 'action' : visualizer.ajax['actions']['db_get_data'],
300 - 'security' : visualizer.ajax['nonces']['db_get_data'],
301 - 'params' : $('#db-query-form').serialize()
302 - },
303 - success : function(data){
304 - if(data.success){
305 - $('.db-wizard-results').html(data.data.table);
306 - $('#results').DataTable({
307 - "paging": false
308 - });
309 - }else{
310 - $('.db-wizard-error').html(data.data.msg);
311 - }
312 - },
313 - complete: function(){
314 - end_ajax($('#visualizer-db-query'));
315 - }
316 - });
317 - });
318 -
319 - $( '#db-chart-button' ).on( 'click', function(){
320 -
321 - $('body').off('visualizer:change:action').on('visualizer:change:action', function(e){
322 - var filter_button = $( '#db-chart-button' );
323 - $( '#visualizer-db-query' ).css("z-index", "-1").hide();
324 - filter_button.val( filter_button.attr( 'data-t-chart' ) );
325 - filter_button.html( filter_button.attr( 'data-t-chart' ) );
326 - filter_button.attr( 'data-current', 'chart' );
327 - $( '#canvas' ).css("z-index", "1").show();
328 - });
329 -
330 - $('#content').css('width', 'calc(100% - 300px)');
331 - if( $(this).attr( 'data-current' ) === 'chart'){
332 - $(this).val( $(this).attr( 'data-t-filter' ) );
333 - $(this).html( $(this).attr( 'data-t-filter' ) );
334 - $(this).attr( 'data-current', 'filter' );
335 - $( '.visualizer-editor-lhs' ).hide();
336 - $( '#visualizer-db-query' ).css("z-index", "9999").show();
337 - $('body').trigger('visualizer:db:query:focus', {});
338 - $( '#canvas' ).hide();
339 - }else{
340 - var filter_button = $(this);
341 - $( '#visualizer-db-query' ).css("z-index", "-1").hide();
342 - $('#canvas').lock();
343 - filter_button.val( filter_button.attr( 'data-t-chart' ) );
344 - filter_button.html( filter_button.attr( 'data-t-chart' ) );
345 - filter_button.attr( 'data-current', 'chart' );
346 - $( '#canvas' ).css("z-index", "1").show();
347 - $( '#db-chart-save-button' ).trigger('click');
348 - }
349 - } );
350 -
351 - $( '#db-chart-save-button' ).on( 'click', function(){
352 - // submit only if a query has been provided.
353 - if($('#db-query-form .visualizer-db-query').val().length > 0){
354 - $('#viz-db-wizard-params').val($('#db-query-form').serialize());
355 - $('#vz-db-wizard').submit();
356 - }else{
357 - $('#canvas').unlock();
358 - }
359 - });
360 - }
361 -
362 - function init_json_import(){
363 - if(typeof visualizer === 'undefined'){
364 - return;
365 - }
366 -
367 - var regex = new RegExp(visualizer.json_tag_separator, 'g');
368 -
369 - $( '#visualizer-json-screen' ).css("z-index", "-1").hide();
370 - $('.visualizer-json-form').accordion({
371 - heightStyle: 'content',
372 - active: 0
373 - });
374 - $('.visualizer-json-subform').accordion({
375 - heightStyle: 'content',
376 - active: false,
377 - collapsible: true
378 - });
379 -
380 - // open the accordions by default if they are indicated with the 'open' class.
381 - $('.visualizer-json-subform .viz-substep.open').each(function(i, e){
382 - $('.visualizer-json-subform').accordion( "option", "active", i );
383 - });
384 -
385 - // toggle between chart and create/modify parameters
386 - $( '#json-chart-button, #woo-chart-button' ).on( 'click', function(){
387 -
388 - $('body').off('visualizer:change:action').on('visualizer:change:action', function(e){
389 - var filter_button = $( '#json-chart-button, #woo-chart-button' );
390 - $( '#visualizer-json-screen' ).css("z-index", "-1").hide();
391 - filter_button.val( filter_button.attr( 'data-t-chart' ) );
392 - filter_button.html( filter_button.attr( 'data-t-chart' ) );
393 - filter_button.attr( 'data-current', 'chart' );
394 - $( '#canvas' ).css("z-index", "1").show();
395 - $( '#vz-import-woo-report' ).find( 'select, input' ).removeAttr( 'disabled' );
396 - });
397 -
398 - if ( 'json-chart-button' === $( this ).attr( 'id' ) ) {
399 - $( '#vz-import-woo-report' ).find( 'select, input' ).attr( 'disabled', true );
400 - } else {
401 - $( '#vz-import-woo-report' ).find( 'select, input' ).removeAttr( 'disabled' );
402 - }
403 - $('#content').css('width', 'calc(100% - 100px)');
404 - if( $(this).attr( 'data-current' ) === 'chart'){
405 - // toggle from chart to LHS form
406 - $(this).val( $(this).attr( 'data-t-filter' ) );
407 - $(this).html( $(this).attr( 'data-t-filter' ) );
408 - $(this).attr( 'data-current', 'filter' );
409 - $( '.visualizer-editor-lhs' ).hide();
410 - $( '#visualizer-json-screen' ).css("z-index", "9999").show();
411 - if ( 'woo-chart-button' === $( this ).attr( 'id' ) && '' !== $( '#vz-woo-source:visible' ).val() ) {
412 - $( '#vz-import-json-url' ).val( visualizer.rest_base + $( '#vz-woo-source' ).val() ).attr( 'readonly', true );
413 - } else {
414 - if ( 'undefined' !== $( '#vz-import-json-url' ).attr( 'readonly' ) ) {
415 - $( '#vz-import-json-url' ).val( '' ).removeAttr( 'readonly' ).removeAttr( 'value' );
416 - $('#json-endpoint-form')[0].reset();
417 - $('.visualizer-json-form h3.viz-step:not(.step1)').addClass('ui-state-disabled');
418 - }
419 - }
420 - $( '#canvas' ).hide();
421 - }else{
422 - // toggle from LHS form to chart
423 - $( '#json-conclude-form' ).trigger('submit');
424 - }
425 - } );
426 -
427 - $('body').on('visualizer:json:form:submit', function() {
428 - var filter_button = $( '#json-chart-button, #woo-chart-button' );
429 - $( '#visualizer-json-screen' ).css("z-index", "-1").hide();
430 - $('#canvas').lock();
431 - filter_button.val( filter_button.attr( 'data-t-chart' ) );
432 - filter_button.html( filter_button.attr( 'data-t-chart' ) );
433 - filter_button.attr( 'data-current', 'chart' );
434 - end_ajax( $( '#visualizer-json-screen' ) );
435 - $( '#canvas' ).removeClass('visualizer-chart-loaded').css("z-index", "1").show();
436 - });
437 -
438 -
439 - // fetch the roots for the provided endpoint
440 - $( '#visualizer-json-fetch' ).on( 'click', function(e){
441 - e.preventDefault();
442 - $('.visualizer-json-form').accordion( 'option', 'active', 0 );
443 - $('.visualizer-json-form h3.viz-step:not(.step1)').addClass('ui-state-disabled');
444 - $('.json-table').html('');
445 - start_ajax( $( '#visualizer-json-screen' ) );
446 - $.ajax({
447 - url : ajaxurl,
448 - method : 'post',
449 - data : {
450 - 'action' : visualizer.ajax['actions']['json_get_roots'],
451 - 'security' : visualizer.ajax['nonces']['json_get_roots'],
452 - 'params' : $('#json-endpoint-form').serialize()
453 - },
454 - success : function(data){
455 - if(data.success){
456 - $('#vz-import-json-root').empty();
457 - $.each(data.data.roots, function(i, name){
458 - $('#vz-import-json-root').append('<option value="' + name + '">' + name.replace(regex, visualizer.json_tag_separator_view) + '</option>');
459 - });
460 - $('#json-root-form').fadeIn('medium');
461 - json_accordion_activate(1, true);
462 - }else{
463 - alert(data.data.msg);
464 - }
465 - },
466 - complete: function(){
467 - end_ajax($('#visualizer-json-screen'));
468 - }
469 - });
470 - });
471 -
472 - // fetch the data for the chosen root
473 - $( '#visualizer-json-parse' ).on( 'click', function(e){
474 - e.preventDefault();
475 - $('.visualizer-json-form h3.viz-step:not(.step1):not(.step2)').addClass('ui-state-disabled');
476 - $('.json-table').html('');
477 - start_ajax( $( '#visualizer-json-screen' ) );
478 - $.ajax({
479 - url : ajaxurl,
480 - method : 'post',
481 - data : {
482 - 'action' : visualizer.ajax['actions']['json_get_data'],
483 - 'security' : visualizer.ajax['nonces']['json_get_data'],
484 - 'params' : $('#json-root-form, #json-endpoint-form').serialize()
485 - },
486 - success : function(data){
487 - if(data.success){
488 - $('#vz-import-json-paging option:not(.static)').remove();
489 - if(data.data.paging.length > 0){
490 - var $template = $('#vz-import-json-paging').attr('data-template');
491 - $.each(data.data.paging, function(i, name){
492 - var display = name.replace(regex, visualizer.json_tag_separator_view);
493 - display = $template.replace('?', display);
494 - $('#vz-import-json-paging').append('<option value="' + name + '">' + display + '</option>');
495 - });
496 - $('.json-pagination').show();
497 - }
498 - $('#json-conclude-form .json-table').html(data.data.table);
499 -
500 - var $table = create_editor_table( '#json-conclude-form' );
501 -
502 - json_accordion_activate(3, true);
503 - json_accordion_activate(2, false);
504 - $table.columns.adjust().draw();
505 - }else{
506 - alert(data.data.msg);
507 - }
508 - },
509 - complete: function(){
510 - end_ajax($('#visualizer-json-screen'));
511 - }
512 - });
513 - });
514 -
515 - // when the data is set and the chart is updated, toggle the screen so that the chart is shown
516 - $('#json-conclude-form').on( 'submit', function(e){
517 - // at least one column has to be selected as non-excluded.
518 - var count_selected = 0;
519 - $('select.viz-select-data-type').each(function(i, element){
520 - if($(element).prop('selectedIndex') > 0){
521 - count_selected++;
522 - }
523 - });
524 - if(count_selected === 0){
525 - alert(visualizer.l10n.select_columns);
526 - return false;
527 - }
528 -
529 - // populate the form elements that are in the other tabs.
530 - $('#json-conclude-form-helper .json-form-element, #json-endpoint-form .json-form-element, #json-root-form .json-form-element, #vz-import-json .json-form-element, #vz-import-woo-report .json-form-element:not(:disabled)').each(function(x, y){
531 - $('#json-conclude-form').append('<input type="hidden" name="' + y.name + '" value="' + y.value + '">');
532 - });
533 -
534 - $('body').trigger('visualizer:json:form:submit');
535 - });
536 -
537 - // update the schedule
538 - $('#json-chart-save-button, #woo-chart-save-button').on('click', function(e){
539 - e.preventDefault();
540 - $('#canvas').lock();
541 - var btnID = jQuery( this ).attr( 'id' );
542 - $.ajax({
543 - url : ajaxurl,
544 - method : 'post',
545 - data : {
546 - 'action' : visualizer.ajax['actions']['json_set_schedule'],
547 - 'security' : visualizer.ajax['nonces']['json_set_schedule'],
548 - 'chart' : $('#vz-json-time, #vz-woo-time').attr('data-chart'),
549 - 'time' : $('#vz-json-time, #vz-woo-time').val(),
550 - 'is_woocommerce_report': 'woo-chart-save-button' === btnID,
551 - },
552 - success : function(data){
553 - // do nothing.
554 - },
555 - complete: function(){
556 - $('#canvas').unlock();
557 - }
558 - });
559 - });
560 -
561 - // Select WooCommerce report endpoint.
562 - $( '#vz-woo-source' ).on( 'click', function( e ) {
563 - // Trigger change action.
564 - $( 'body' ).trigger( 'visualizer:change:action' );
565 -
566 - if ( '' !== $( this ).val() ) {
567 - $( '#woo-chart-button, #woo-chart-save-button' ).removeAttr( 'disabled' );
568 - } else {
569 - $( '#woo-chart-button, #woo-chart-save-button' ).attr( 'disabled', true );
570 - }
571 - } );
572 -
573 - }
574 -
575 - function init_editor_table() {
576 - $('body').on('visualizer:db:editor:table:init', function(event, data){
577 - var $table = create_editor_table('.viz-table-editor', data.config);
578 - $('body').on('visualizer:db:editor:table:redraw', function(event, data){
579 - $table.draw();
580 - });
581 - });
582 - }
583 -
584 - function create_editor_table(element, config) {
585 - var settings = {
586 - paging: false,
587 - searching: false,
588 - ordering: false,
589 - select: false,
590 - scrollX: "100%",
591 - scrollY: "400px",
592 - info: false,
593 - colReorder: {
594 - fixedColumnsLeft: 1
595 - }
596 - };
597 -
598 - // show column visibility button only when more than 6 columns are found (including the Label column)
599 - if($(element + ' table.viz-editor-table thead tr th').length > 6){
600 - $.extend( settings, {
601 - dom: 'Bt',
602 - buttons: [
603 - {
604 - extend: 'colvis',
605 - columns: ':gt(0)',
606 - collectionLayout: 'four-column'
607 - }
608 - ]
609 - } );
610 - }
611 - if(config){
612 - $.extend( settings, config );
613 - }
614 -
615 - var $table = $(element + ' .viz-editor-table').DataTable(settings);
616 - return $table;
617 - }
618 -
619 - function json_accordion_activate($step, $activate){
620 - $('.visualizer-json-form h3.viz-step.step' + ( $step + 1 )).removeClass('ui-state-disabled');
621 - if($activate){
622 - $('.visualizer-json-form').accordion( 'option', 'active', $step );
623 - }
624 - }
625 -
626 - function start_ajax(element){
627 - element.lock();
628 - }
629 -
630 - function end_ajax(element){
631 - element.unlock();
632 - }
633 -
50 + $('.more-info').click(function() {
51 + $(this).parent().find('.section-description:first').toggle();
52 + return false;
53 + });
54 + });
634 55 })(jQuery);
635 56
636 -(function ($) {
637 - $.fn.lock = function () {
638 - $(this).each(function () {
57 +(function($) {
58 + $.fn.lock = function() {
59 + $(this).each(function() {
639 60 var $this = $(this);
640 61 var position = $this.css('position');
641 62
642 63 if (!position) {
@@ -642,9 +63,9 @@
642 63 if (!position) {
643 64 position = 'static';
644 65 }
645 66
646 - switch (position) {
67 + switch(position) {
647 68 case 'absolute':
648 69 case 'relative':
649 70 break;
650 71 default:
@@ -663,21 +84,21 @@
663 84 loader.width(width).height(height);
664 85
665 86 locker.append(loader);
666 87 $this.append(locker);
667 - $(window).resize(function () {
88 + $(window).resize(function() {
668 89 $this.find('.locker,.locker-loader').width($this.width()).height($this.height());
669 90 });
670 91 });
671 92
672 93 return $(this);
673 - };
94 + }
674 95
675 - $.fn.unlock = function () {
676 - $(this).each(function () {
96 + $.fn.unlock = function() {
97 + $(this).each(function() {
677 98 $(this).find('.locker').remove();
678 99 $(this).css('position', $(this).data('position'));
679 100 });
680 101
681 102 return $(this);
682 - };
103 + }
683 104 })(jQuery);