/* global visualizer */ /* global console */ /* global vizSettingsHaveChanged */ /* global vizHaveSettingsChanged */ (function($, v) { var timeout; $(document).ready(function() { // when data is impported using csv/url, update the hidden data and the advanced settings sidebar. // editor and sidebar are both JSON objects window.vizUpdateHTML = function( editor, sidebar ) { $('.viz-simple-editor').remove(); $('#content').append(editor.html); $('#settings-form .viz-group').remove(); $('#settings-form').append(sidebar.html); $('#settings-form .control-text').change(updateChart).keyup(updateChart); $('#settings-form .control-select, #settings-form .control-checkbox, #settings-form .control-check').change(updateChart); $('#settings-form .color-picker-hex').wpColorPicker({ change: updateChart, clear: updateChart }); $('#settings-form textarea[name="manual"]').change(validateJSON).keyup(validateJSON); vizSettingsHaveChanged(false); }; // Update google chart filter control. window.vizUpdateFilterControl = function() { $( '#control_wrapper_canvas' ).removeClass( 'no-filter' ); var controlsOpt = $( '.vz-controls-opt' ).map( function() { var val = $(this).val(); return '' !== val && 'false' !== val ? val : false ; } ).get(); controlsOpt = controlsOpt.filter( function(el) { return el; } ); if ( controlsOpt.length === 0 ) { $( '#control_wrapper_canvas' ).addClass( 'no-filter' ).html(''); } } $('#settings-button').click(function() { $('#settings-form').submit(); }); // this portion captures if the settings have changed so that tabs can handle that information. var viz_settings_have_changed = false; window.vizHaveSettingsChanged = function(){ return viz_settings_have_changed; }; window.vizSettingsHaveChanged = function(value){ viz_settings_have_changed = value; }; // this portion captures if the settings have changed so that tabs can handle that information. function updateChart() { vizUpdateFilterControl(); clearTimeout(timeout); timeout = setTimeout(function() { var settings = $('#settings-form').serializeObject(); settings = JSON.stringify( settings ).replace( /<\/?[^>]+(>|$)/g, '' ); settings = JSON.parse( settings ); delete settings['width']; delete settings['height']; v.charts.canvas.settings = settings; $('body').trigger('visualizer:render:currentchart:update', {visualizer: v}); vizSettingsHaveChanged(true); }, 1500); } function validateJSON() { $('#visualizer-error-manual').remove(); try{ var options = JSON.parse($(this).val()); }catch(error){ $('