PluginProbe
Visualizer – Tables & Charts Manager with Built-in AI Generator / 3.7.9
Visualizer – Tables & Charts Manager with Built-in AI Generator v3.7.9
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/library.js +10 -207 4.0.33.7.9 View file →
@@ -32,24 +32,12 @@
32 32 }
33 33 });
34 34 })(wp.media.view);
35 35
36 -function createPopupProBlocker( $ , e ) {
37 - if ( ! visualizer.is_pro_user && e.target.classList.contains('viz-is-pro-chart') ) {
38 - $("#overlay-visualizer").css("display", "block");
39 - $(".vizualizer-renew-notice-popup").css("display", "block");
40 - return true;
41 - }
42 - return false;
43 -}
44 -
45 36 (function ($, vmv, vu) {
46 37 var resizeTimeout;
47 38
48 39 $.fn.adjust = function () {
49 - if ( $( '#visualizer-library' ).hasClass( 'view-list' ) ) {
50 - return this;
51 - }
52 40 return $(this).each(function () {
53 41 var width = $('#visualizer-library').width(),
54 42 margin = width * 0.02;
55 43
@@ -87,92 +75,27 @@
87 75 });
88 76 $(this).parent('form').submit();
89 77 });
90 78
91 - // Copy shortcode when clicking the code display in list view.
92 - $( document ).on( 'click', '.viz-shortcode-display', function () {
93 - var text = $( this ).text();
94 - var el = this;
95 -
96 - // Fallback copy method using a temporary textarea. Returns true on success.
97 - var fallbackCopy = function ( value ) {
98 - var ta = document.createElement( 'textarea' );
99 - ta.value = value;
100 - document.body.appendChild( ta );
101 - ta.select();
102 - var succeeded = false;
103 - try {
104 - succeeded = document.execCommand( 'copy' );
105 - } catch ( e ) {
106 - succeeded = false;
107 - }
108 - document.body.removeChild( ta );
109 - return succeeded;
110 - };
111 -
112 - // Apply temporary "copied" feedback.
113 - var showCopiedFeedback = function () {
114 - $( el ).addClass( 'viz-shortcode-copied' );
115 - setTimeout( function () {
116 - $( el ).removeClass( 'viz-shortcode-copied' );
117 - }, 1200 );
118 - };
119 -
120 - if ( navigator.clipboard && navigator.clipboard.writeText ) {
121 - navigator.clipboard.writeText( text ).then( function () {
122 - // Clipboard API succeeded.
123 - showCopiedFeedback();
124 - } ).catch( function () {
125 - // Clipboard API failed; fall back to textarea method.
126 - if ( fallbackCopy( text ) ) {
127 - showCopiedFeedback();
128 - }
129 - } );
130 - } else {
131 - // No Clipboard API; use fallback directly.
132 - if ( fallbackCopy( text ) ) {
133 - showCopiedFeedback();
134 - }
135 - }
136 - } );
137 -
138 - $('.visualizer-chart-shortcode').click(function (event) {
139 -
140 - if ( createPopupProBlocker( $, event ) ) {
141 - event.preventDefault();
142 - event.stopPropagation();
143 - return;
144 - }
145 -
79 + $('.visualizer-chart-shortcode').click(function (e) {
146 80 var range, selection;
147 81
148 82 if (window.getSelection && document.createRange) {
149 83 selection = window.getSelection();
150 84 range = document.createRange();
151 - range.selectNodeContents(event.target);
85 + range.selectNodeContents(e.target);
152 86 selection.removeAllRanges();
153 87 selection.addRange(range);
154 88 } else if (document.selection && document.body.createTextRange) {
155 89 range = document.body.createTextRange();
156 - range.moveToElementText(event.target);
90 + range.moveToElementText(e.target);
157 91 range.select();
158 92 }
159 93 });
160 94
161 - $( '.visualizer-languages-list' ).on( 'click', '[data-lang_code]', function() {
162 - if ( $(this).find( 'i' ).hasClass( 'otgs-ico-add' ) ) {
163 - vu.create = vu.create + '&lang=' + $(this).data('lang_code') + '&parent_chart_id=' + $(this).data('chart');
164 - $('.add-new-chart').click();
165 - } else {
166 - vu.edit = vu.edit + '&lang=' + $(this).data('lang_code') + '&chart=' + $(this).data('chart');
167 - $('.visualizer-chart-edit').click();
168 - }
169 - } );
170 -
171 - function openClassicBuilder() {
95 + $('.add-new-chart').click(function () {
172 96 var wnd = window,
173 97 view = new vmv.Chart({action: vu.create});
174 - vu.create = vu.create.replace(/[\?&]lang=[^&]+/, '').replace(/[\?&]parent_chart_id=[^&]+/, '');
175 98
176 99 window.parent.addEventListener('message', function(event){
177 100 switch(event.data) {
178 101 case 'visualizer:mediaframe:close':
@@ -187,92 +110,16 @@
187 110 wnd.send_to_editor = function () {
188 111 wnd.location.href = vu.base.replace(/type=[a-zA-Z]*/, '').replace(/vaction/, '');
189 112 };
190 113 view.open();
191 - }
192 114
193 - function closeAddNewMenus() {
194 - $('.viz-add-new-group').removeClass('is-open');
195 - $('.viz-add-new-toggle').attr('aria-expanded', 'false');
196 - $('.viz-add-new-menu').attr('aria-hidden', 'true');
197 - }
198 -
199 - $(document).on('click', function() {
200 - closeAddNewMenus();
201 - });
202 -
203 - $(document).on('click', '.viz-add-new-toggle', function(event) {
204 - event.preventDefault();
205 - event.stopPropagation();
206 - event.stopImmediatePropagation();
207 - var $group = $(this).closest('.viz-add-new-group');
208 - var isOpen = $group.hasClass('is-open');
209 - closeAddNewMenus();
210 - if ( ! isOpen ) {
211 - $group.addClass('is-open');
212 - $(this).attr('aria-expanded', 'true');
213 - $group.find('.viz-add-new-menu').attr('aria-hidden', 'false');
214 - }
215 115 return false;
216 116 });
217 117
218 - $(document).on('click', '.viz-add-new-item', function(event) {
219 - event.preventDefault();
220 - event.stopPropagation();
221 - event.stopImmediatePropagation();
222 - var builder = $(this).data('viz-builder');
223 - closeAddNewMenus();
118 + $('.visualizer-chart-edit').click(function () {
119 + var wnd = window,
120 + view = new vmv.Chart({action: vu.edit + '&chart=' + $(this).attr('data-chart')});
224 121
225 - if ( builder === 'ai' ) {
226 - if ( typeof window.vizOpenAIBuilderNew === 'function' ) {
227 - window.vizOpenAIBuilderNew();
228 - return;
229 - }
230 - if ( typeof window.vizOpenChartChooser === 'function' ) {
231 - var classicCallback = function() {
232 - openClassicBuilder();
233 - };
234 - window.vizOpenChartChooser( classicCallback );
235 - return;
236 - }
237 - }
238 -
239 - openClassicBuilder();
240 - });
241 -
242 - $('.add-new-chart').click(function () {
243 - // Hook for the React chart builder chooser modal.
244 - // If the React app is loaded it sets window.vizOpenChartChooser and handles routing.
245 - // It will call the classicCallback if the user picks the Classic Builder.
246 - if (typeof window.vizOpenChartChooser === 'function') {
247 - var classicCallback = function() {
248 - openClassicBuilder();
249 - };
250 - window.vizOpenChartChooser(classicCallback);
251 - return false;
252 - }
253 - openClassicBuilder();
254 - return false;
255 - });
256 -
257 - $('.visualizer-chart-edit').click(function (event) {
258 -
259 - if ( createPopupProBlocker( $, event ) ) {
260 - return;
261 - }
262 -
263 - // D3/AI charts open in the AI Builder instead of the classic modal.
264 - if ( $(this).data('library') === 'd3' && typeof window.vizOpenAIBuilderEdit === 'function' ) {
265 - window.vizOpenAIBuilderEdit( $(this).attr('data-chart') );
266 - return false;
267 - }
268 -
269 - var wnd = window;
270 - var view = new vmv.Chart( {
271 - action: vu.edit.indexOf('&chart') != -1 ? vu.edit : vu.edit + '&chart=' + $(this).attr('data-chart')
272 - } );
273 - vu.edit = vu.edit.replace(/[\?&]lang=[^&]+/, '');
274 -
275 122 wnd.send_to_editor = function () {
276 123 wnd.location.href = wnd.location.href.replace(/vaction/, '');
277 124 };
278 125
@@ -279,20 +126,10 @@
279 126 view.open();
280 127
281 128 return false;
282 129 });
283 - $(".visualizer-chart-clone").on("click", function ( event ) {
284 - if ( createPopupProBlocker( $, event ) ) {
285 - event.preventDefault();
286 - }
287 - });
288 130
289 - $(".visualizer-chart-export").on("click", function (event) {
290 -
291 - if ( createPopupProBlocker( $, event ) ) {
292 - return;
293 - }
294 -
131 + $(".visualizer-chart-export").on("click", function () {
295 132 $.ajax({
296 133 url: $(this).attr("data-chart"),
297 134 method: "get",
298 135 success: function (data, textStatus, jqXHR) {
@@ -311,12 +148,9 @@
311 148 });
312 149 return false;
313 150 });
314 151
315 - $(".visualizer-chart-image").on("click", function (event) {
316 - if ( createPopupProBlocker( $, event ) ) {
317 - return;
318 - }
152 + $(".visualizer-chart-image").on("click", function () {
319 153 $('body').trigger('visualizer:action:specificchart', {action: 'image', id: $(this).attr("data-chart"), data: null, dataObj: {name: $(this).attr("data-chart-title")}});
320 154 return false;
321 155 });
322 156
@@ -324,14 +158,8 @@
324 158 if(location.href.indexOf('vaction=addnew') !== -1){
325 159 $('.add-new-chart').first().trigger('click');
326 160 }
327 161
328 - //if vaction=edit is found as a GET request parameter, show the modal.
329 - if(location.href.indexOf('vaction=edit') !== -1 && location.href.indexOf('chart=') !== -1){
330 - const chartId = location.href.split('chart=')[1].split('&')[0];
331 - $('.visualizer-chart-edit').attr('data-chart', chartId).trigger('click');
332 - }
333 -
334 162 $(window).resize(function () {
335 163 clearTimeout(resizeTimeout);
336 164 resizeTimeout = setTimeout(function () {
337 165 $('.visualizer-chart-canvas').adjust();
@@ -342,30 +170,5 @@
342 170 alert( $(this).attr('data-viz-error') );
343 171 });
344 172 $('.visualizer-chart:not(.visualizer-chart-display), .visualizer-library-pagination').fadeIn(500);
345 173 });
346 -})(jQuery, visualizer.media.view, visualizer.urls);
347 -
348 -
349 -document.querySelectorAll('.visualizer-chart').forEach(function (chart) {
350 - const translatable = chart.querySelector('.visualizer-languages-list');
351 - if ( ! translatable ) {
352 - return;
353 - }
354 -
355 - const chartId = chart.querySelector('.visualizer-chart-canvas')?.id?.replace('visualizer-', '');
356 -
357 - if ( ! chartId ) {
358 - return;
359 - }
360 -
361 - const translatableActions = translatable.querySelectorAll('[data-lang_code]');
362 - translatableActions.forEach(function (action) {
363 - action.addEventListener('click', function () {
364 - window?.tiTrk?.with('visualizer')?.add({
365 - feature: 'chart-library',
366 - featureComponent: 'chart-language-translations-used',
367 - groupId: chartId,
368 - });
369 - });
370 - });
371 -});
174 +})(jQuery, visualizer.media.view, visualizer.urls);