PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.4.8
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.4.8
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
← All changes | js/frame.js +352 -46 3.1.23.4.8 View file →
@@ -1,12 +1,14 @@
1 1 /* global prompt */
2 2 /* global visualizer */
3 3 /* global alert */
4 +/* global confirm */
4 5 /* global ajaxurl */
5 6 /* global CodeMirror */
7 +/* global vizHaveSettingsChanged */
6 8
7 9 (function ($) {
8 - $(window).load(function(){
10 + $(window).on('load', function(){
9 11 // scroll to the selected chart type.
10 12 if($('label.type-label.type-label-selected').length > 0) {
11 13 $('label.type-label.type-label-selected')[0].scrollIntoView();
12 14 }
@@ -12,18 +14,47 @@
12 14 }
13 15 });
14 16
15 17 $(document).ready(function () {
16 - // open the correct source tab.
18 + onReady();
19 + });
20 +
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.context).attr('id').includes('viz-tab-basic')){
31 + return confirm(visualizer.l10n.save_settings);
32 + }
33 + }
34 + });
35 + }
36 +
37 + function onReady() {
38 + initTabs();
39 +
40 + // open the correct source tab/sub-tab.
17 41 var source = $('#visualizer-chart-id').attr('data-chart-source');
18 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();
19 45
20 46 init_permissions();
21 47
22 48 if(typeof visualizer !== 'undefined' && visualizer.is_pro) {
23 49 init_db_import();
50 + init_filter_import();
24 51 }
25 52
53 + init_json_import();
54 +
55 + init_editor_table();
56 +
26 57 // update the manual configuation link to point to the correct chart type.
27 58 var type = $('#visualizer-chart-id').attr('data-chart-type');
28 59 var chart_type_in_api_link = type + 'chart';
29 60 switch (type) {
@@ -42,22 +73,10 @@
42 73 $('.type-label-selected').removeClass('type-label-selected');
43 74 $(this).parent().addClass('type-label-selected');
44 75 });
45 76
46 - $('#vz-chart-settings h2').click(function () {
47 - $("#vz-chart-source").hide();
48 - $("#vz-chart-permissions").removeClass('open').addClass('bottom-fixed');
49 - $(this).parent().removeClass('bottom-fixed').addClass('open');
50 - $("#vz-chart-permissions .viz-group-header").hide();
51 - return false;
52 - });
53 - $('#vz-chart-settings .customize-section-back').click(function () {
54 - $("#vz-chart-source").show();
55 - $(this).parent().parent().removeClass('open').addClass('bottom-fixed');
56 -
57 - return false;
58 - });
59 - $('.viz-group-title').click(function () {
77 + // collapse other open sections of this group
78 + $(document).on('click', '.viz-group-title', function () {
60 79 var parent = $(this).parent();
61 80
62 81 if (parent.hasClass('open')) {
63 82 parent.removeClass('open');
@@ -64,14 +83,32 @@
64 83 } else {
65 84 parent.parent().find('.viz-group.open').removeClass('open');
66 85 parent.addClass('open');
67 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');
68 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 +
69 106 $('#view-remote-file').click(function () {
70 - var url = $(this).parent().find('#remote-data').val();
107 + var url = $(this).parent().find('#vz-schedule-url').val();
71 108
72 109 if (url !== '') {
73 - 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)) {
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)) {
74 111 if (url.substr(url.length - 8) === '/pubhtml') {
75 112 url = url.substring(0, url.length - 8) + '/export?format=csv';
76 113 }
77 114
@@ -94,13 +131,13 @@
94 131 $('#thehole').load(function () {
95 132 $('#canvas').unlock();
96 133 });
97 134
98 - $('.viz-section-title').click(function () {
135 + $(document).on('click', '.viz-section-title', function () {
99 136 $(this).toggleClass('open').parent().find('.viz-section-items').toggle();
100 137 });
101 138
102 - $('.more-info').click(function () {
139 + $(document).on('click', '.more-info', function () {
103 140 $(this).parent().find('.viz-section-description:first').toggle();
104 141 return false;
105 142 });
106 143
@@ -107,40 +144,41 @@
107 144 $('#cancel-button').click(function () {
108 145 $('#cancel-form').submit();
109 146 });
110 147
111 - });
148 + init_type_vs_library();
112 149
113 - function init_permissions(){
114 - $('#vz-chart-permissions h2').click(function () {
115 - $("#vz-chart-source").hide();
116 - $("#vz-chart-permissions .viz-group-header").show();
117 - $("#vz-chart-settings").removeClass('open').addClass('bottom-fixed');
150 + $('.viz-abort').on('click', function(e){
151 + e.preventDefault();
152 + window.parent.postMessage('visualizer:mediaframe:close', '*');
153 + });
118 154
119 - $('#settings-button').click(function(e) {
120 - e.preventDefault();
121 - $('#permissions-form').submit();
122 - $('#settings-form').submit();
123 - });
155 + }
124 156
125 - $(this).parent().removeClass('bottom-fixed').addClass('open');
126 -
127 - return false;
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);
128 166 });
129 - $('#vz-chart-permissions .customize-section-back').click(function () {
130 - $("#vz-chart-source").show();
131 167
132 - $("#vz-chart-permissions .viz-group-header").hide();
133 - $('#settings-button').click(function(e) {
134 - e.preventDefault();
135 - $('#settings-form').submit();
136 - });
168 + enable_libraries_for($('input.type-radio:checked').val(), $typeVsLibrary);
169 + }
137 170
138 - $(this).parent().parent().removeClass('open').addClass('bottom-fixed');
139 -
140 - return false;
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');
141 176 });
177 + $('select.viz-select-library').val( $('select.viz-select-library option:not(.disabled)').val() );
178 + }
142 179
180 + function init_permissions(){
143 181 $('.visualizer-permission').chosen({
144 182 width : '50%',
145 183 search_contains : true
146 184 });
@@ -218,10 +256,28 @@
218 256 // from the editor. Let's force this.
219 257 $('body').on('visualizer:db:query:update', function(event, data){
220 258 cm.save();
221 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 + });
222 272 }
223 273
274 + function init_filter_import() {
275 + $( '#db-filter-save-button' ).on( 'click', function(){
276 + $('#vz-filter-wizard').submit();
277 + });
278 + }
279 +
224 280 function init_db_import(){
225 281 $( '#visualizer-db-query' ).css("z-index", "-1").hide();
226 282
227 283 init_db_import_component();
@@ -260,8 +316,18 @@
260 316 });
261 317 });
262 318
263 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 +
264 330 $('#content').css('width', 'calc(100% - 300px)');
265 331 if( $(this).attr( 'data-current' ) === 'chart'){
266 332 $(this).val( $(this).attr( 'data-t-filter' ) );
267 333 $(this).html( $(this).attr( 'data-t-filter' ) );
@@ -282,11 +348,251 @@
282 348 }
283 349 } );
284 350
285 351 $( '#db-chart-save-button' ).on( 'click', function(){
286 - $('#viz-db-wizard-params').val($('#db-query-form').serialize());
287 - $('#vz-db-wizard').submit();
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 + }
288 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' ).on( 'click', function(){
387 +
388 + $('body').off('visualizer:change:action').on('visualizer:change:action', function(e){
389 + var filter_button = $( '#json-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 + });
396 +
397 + $('#content').css('width', 'calc(100% - 100px)');
398 + if( $(this).attr( 'data-current' ) === 'chart'){
399 + // toggle from chart to LHS form
400 + $(this).val( $(this).attr( 'data-t-filter' ) );
401 + $(this).html( $(this).attr( 'data-t-filter' ) );
402 + $(this).attr( 'data-current', 'filter' );
403 + $( '.visualizer-editor-lhs' ).hide();
404 + $( '#visualizer-json-screen' ).css("z-index", "9999").show();
405 + $( '#canvas' ).hide();
406 + }else{
407 + // toggle from LHS form to chart
408 + $( '#json-conclude-form' ).trigger('submit');
409 + }
410 + } );
411 +
412 + $('body').on('visualizer:json:form:submit', function() {
413 + var filter_button = $( '#json-chart-button' );
414 + $( '#visualizer-json-screen' ).css("z-index", "-1").hide();
415 + $('#canvas').lock();
416 + filter_button.val( filter_button.attr( 'data-t-chart' ) );
417 + filter_button.html( filter_button.attr( 'data-t-chart' ) );
418 + filter_button.attr( 'data-current', 'chart' );
419 + end_ajax( $( '#visualizer-json-screen' ) );
420 + $( '#canvas' ).css("z-index", "1").show();
421 + });
422 +
423 +
424 + // fetch the roots for the provided endpoint
425 + $( '#visualizer-json-fetch' ).on( 'click', function(e){
426 + e.preventDefault();
427 + $('.visualizer-json-form').accordion( 'option', 'active', 0 );
428 + $('.visualizer-json-form h3.viz-step:not(.step1)').addClass('ui-state-disabled');
429 + $('.json-table').html('');
430 + start_ajax( $( '#visualizer-json-screen' ) );
431 + $.ajax({
432 + url : ajaxurl,
433 + method : 'post',
434 + data : {
435 + 'action' : visualizer.ajax['actions']['json_get_roots'],
436 + 'security' : visualizer.ajax['nonces']['json_get_roots'],
437 + 'params' : $('#json-endpoint-form').serialize()
438 + },
439 + success : function(data){
440 + if(data.success){
441 + $('#vz-import-json-root').empty();
442 + $.each(data.data.roots, function(i, name){
443 + $('#vz-import-json-root').append('<option value="' + name + '">' + name.replace(regex, visualizer.json_tag_separator_view) + '</option>');
444 + });
445 + $('#json-root-form').fadeIn('medium');
446 + json_accordion_activate(1, true);
447 + }else{
448 + alert(data.data.msg);
449 + }
450 + },
451 + complete: function(){
452 + end_ajax($('#visualizer-json-screen'));
453 + }
454 + });
455 + });
456 +
457 + // fetch the data for the chosen root
458 + $( '#visualizer-json-parse' ).on( 'click', function(e){
459 + e.preventDefault();
460 + $('.visualizer-json-form h3.viz-step:not(.step1):not(.step2)').addClass('ui-state-disabled');
461 + $('.json-table').html('');
462 + start_ajax( $( '#visualizer-json-screen' ) );
463 + $.ajax({
464 + url : ajaxurl,
465 + method : 'post',
466 + data : {
467 + 'action' : visualizer.ajax['actions']['json_get_data'],
468 + 'security' : visualizer.ajax['nonces']['json_get_data'],
469 + 'params' : $('#json-root-form, #json-endpoint-form').serialize()
470 + },
471 + success : function(data){
472 + if(data.success){
473 + $('#vz-import-json-paging option:not(.static)').remove();
474 + if(data.data.paging.length > 0){
475 + var $template = $('#vz-import-json-paging').attr('data-template');
476 + $.each(data.data.paging, function(i, name){
477 + var display = name.replace(regex, visualizer.json_tag_separator_view);
478 + display = $template.replace('?', display);
479 + $('#vz-import-json-paging').append('<option value="' + name + '">' + display + '</option>');
480 + });
481 + $('.json-pagination').show();
482 + }
483 + $('#json-conclude-form .json-table').html(data.data.table);
484 +
485 + var $table = create_editor_table( '#json-conclude-form' );
486 +
487 + json_accordion_activate(3, true);
488 + json_accordion_activate(2, false);
489 + $table.columns.adjust().draw();
490 + }else{
491 + alert(data.data.msg);
492 + }
493 + },
494 + complete: function(){
495 + end_ajax($('#visualizer-json-screen'));
496 + }
497 + });
498 + });
499 +
500 + // when the data is set and the chart is updated, toggle the screen so that the chart is shown
501 + $('#json-conclude-form').on( 'submit', function(e){
502 + // at least one column has to be selected as non-excluded.
503 + var count_selected = 0;
504 + $('select.viz-select-data-type').each(function(i, element){
505 + if($(element).prop('selectedIndex') > 0){
506 + count_selected++;
507 + }
508 + });
509 + if(count_selected === 0){
510 + alert(visualizer.l10n.select_columns);
511 + return false;
512 + }
513 +
514 + // populate the form elements that are in the other tabs.
515 + $('#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').each(function(x, y){
516 + $('#json-conclude-form').append('<input type="hidden" name="' + y.name + '" value="' + y.value + '">');
517 + });
518 +
519 + $('body').trigger('visualizer:json:form:submit');
520 + });
521 +
522 + // update the schedule
523 + $('#json-chart-save-button').on('click', function(e){
524 + e.preventDefault();
525 + $('#canvas').lock();
526 + $.ajax({
527 + url : ajaxurl,
528 + method : 'post',
529 + data : {
530 + 'action' : visualizer.ajax['actions']['json_set_schedule'],
531 + 'security' : visualizer.ajax['nonces']['json_set_schedule'],
532 + 'chart' : $('#vz-json-time').attr('data-chart'),
533 + 'time' : $('#vz-json-time').val()
534 + },
535 + success : function(data){
536 + // do nothing.
537 + },
538 + complete: function(){
539 + $('#canvas').unlock();
540 + }
541 + });
542 + });
543 +
544 + }
545 +
546 + function init_editor_table() {
547 + $('body').on('visualizer:db:editor:table:init', function(event, data){
548 + var $table = create_editor_table('.viz-table-editor', data.config);
549 + $('body').on('visualizer:db:editor:table:redraw', function(event, data){
550 + $table.draw();
551 + });
552 + });
553 + }
554 +
555 + function create_editor_table(element, config) {
556 + var settings = {
557 + paging: false,
558 + searching: false,
559 + ordering: false,
560 + select: false,
561 + scrollX: "100%",
562 + scrollY: "400px",
563 + info: false,
564 + colReorder: {
565 + fixedColumnsLeft: 1
566 + }
567 + };
568 +
569 + // show column visibility button only when more than 6 columns are found (including the Label column)
570 + if($(element + ' table.viz-editor-table thead tr th').length > 6){
571 + $.extend( settings, {
572 + dom: 'Bt',
573 + buttons: [
574 + {
575 + extend: 'colvis',
576 + columns: ':gt(0)',
577 + collectionLayout: 'four-column'
578 + }
579 + ]
580 + } );
581 + }
582 + if(config){
583 + $.extend( settings, config );
584 + }
585 +
586 + var $table = $(element + ' .viz-editor-table').DataTable(settings);
587 + return $table;
588 + }
589 +
590 + function json_accordion_activate($step, $activate){
591 + $('.visualizer-json-form h3.viz-step.step' + ( $step + 1 )).removeClass('ui-state-disabled');
592 + if($activate){
593 + $('.visualizer-json-form').accordion( 'option', 'active', $step );
594 + }
289 595 }
290 596
291 597 function start_ajax(element){
292 598 element.lock();