PluginProbe
WP Data Access – App Builder for Tables, Forms, Charts, Maps & Dashboards / 5.2
WP Data Access – App Builder for Tables, Forms, Charts, Maps & Dashboards v5.2
5.5.83 5.5.82 5.5.81 5.5.80 5.5.79 5.5.77 5.5.76 5.5.75 5.5.73 5.5.72 5.5.22 5.5.23 5.5.29 5.5.3 5.5.31 5.5.32 5.5.34 5.5.35 5.5.36 5.5.37 5.5.4 5.5.40 5.5.41 5.5.42 5.5.43 All 159 releases
wp-data-access / assets / js / wpda_admin.js

wpda_admin.js in WP Data Access – App Builder for Tables, Forms, Charts, Maps & Dashboards 5.2, at assets/js/wpda_admin.js

469 lines 16.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 function wpda_show_table_actions( schema_name, table_name, rownum, wpnonce, dbo_type, loading ) {
2 jQuery('#wpda_admin_menu_actions_' + rownum).toggle();
3 wpda_toggle_row_actions(rownum);
4 if (jQuery('#wpda_admin_menu_actions_' + rownum).html()===loading) {
5 url = location.pathname + '?action=wpda_show_table_actions';
6 jQuery.ajax({
7 method: 'POST',
8 url: url,
9 data: {
10 wpdaschema_name: schema_name,
11 table_name: table_name,
12 _wpnonce: wpnonce,
13 dbo_type: dbo_type,
14 rownum: rownum
15 }
16 }).done(
17 function(msg) {
18 jQuery('#wpda_admin_menu_actions_' + rownum).html(msg);
19 }
20 );
21 }
22 }
23
24 function wpda_toggle_row_actions( rownum ) {
25 if (jQuery('#wpda_admin_menu_actions_' + rownum).is(":visible")) {
26 jQuery("#rownum_" + rownum + " td div").removeClass("row-actions");
27 } else {
28 jQuery("#rownum_" + rownum + " td div").addClass("row-actions");
29 }
30 }
31
32 function wpda_list_table_favourite( schema_name, table_name ) {
33 if (jQuery('#span_favourites_'+ table_name).hasClass('dashicons-star-empty')) {
34 action = 'wpda_add_favourite';
35 } else {
36 action = 'wpda_rem_favourite';
37 }
38 url = location.pathname + '?action=' + action;
39 jQuery.ajax({
40 method: 'POST',
41 url: url,
42 data: {
43 wpdaschema_name: schema_name,
44 table_name: table_name
45 }
46 }).done(
47 function (msg) {
48 if (msg === '1') {
49 if (jQuery('#span_favourites_' + table_name).hasClass('dashicons-star-empty')) {
50 jQuery('#span_favourites_' + table_name)
51 .removeClass('dashicons-star-empty')
52 .addClass('dashicons-star-filled')
53 .prop('title', 'Remove from favourites');
54 } else {
55 jQuery('#span_favourites_' + table_name)
56 .removeClass('dashicons-star-filled')
57 .addClass('dashicons-star-empty')
58 .prop('title', 'Add to favourites');
59 }
60 if (jQuery('#wpda_main_favourites_list').val()!=='') {
61 jQuery("#wpda_main_form :input[name='action']").val('-1');
62 jQuery("#wpda_main_form :input[name='action2']").val('-1');
63 jQuery('#wpda_main_form').submit();
64 }
65 } else {
66 alert('Adding to favourites failed!');
67 }
68 }
69 );
70 }
71
72 function wpda_main_export_start() {
73 jQuery("#wpda_main_export_form").submit();
74 jQuery("#wpda_row_export_anchor").empty();
75
76 return false;
77 }
78
79 function wpda_main_export(schemaName, wpnonce, selectedRows) {
80 jQuery("#wpda_main_export_form__schema_name").val(schemaName);
81 jQuery("#wpda_main_export_form__wpnonce").val(wpnonce);
82
83 rows = JSON.parse(selectedRows);
84 for (var i=0; i<rows.length; i++) {
85 jQuery("#wpda_main_export_form").append("<input type='hidden' name='table_names[]' value='" + rows[i] + "' />");
86 }
87
88 jQuery("#wpda_row_export_anchor").append(
89 "<button class='button button-primary wpda_row_export_button' onclick='return wpda_main_export_start();'>Download export</button>"
90 );
91 }
92
93 function wpda_table_export(schemaName, tableNames, wpnonce, formatType, includeTableSettings) {
94 jQuery("#wpda_table_export_form__schema_name").val(schemaName);
95 jQuery("#wpda_table_export_form__table_names").val(tableNames);
96 jQuery("#wpda_table_export_form__format_type").val(formatType);
97 jQuery("#wpda_table_export_form__wpnonce").val(wpnonce);
98 jQuery("#wpda_table_export_form__include_table_settings").val(includeTableSettings);
99
100 jQuery("#wpda_table_export_form").submit();
101 }
102
103 function wpda_row_export_start() {
104 jQuery("#wpda_row_export_form").submit();
105 jQuery("#wpda_row_export_anchor").empty();
106
107 return false;
108 }
109
110 function wpda_row_export(pid, schemaName, tableNames, wpnonce, formatType, mysqlSet, showCreate, showComments, selectedRows) {
111 jQuery("#wpda_row_export_form__pid").val(pid);
112 jQuery("#wpda_row_export_form__schema_name").val(schemaName);
113 jQuery("#wpda_row_export_form__table_names").val(tableNames);
114 jQuery("#wpda_row_export_form__mysql_set").val(mysqlSet);
115 jQuery("#wpda_row_export_form__show_create").val(showCreate);
116 jQuery("#wpda_row_export_form__show_comments").val(showComments);
117 jQuery("#wpda_row_export_form__format_type").val(formatType);
118 jQuery("#wpda_row_export_form__wpnonce").val(wpnonce);
119
120 rows = JSON.parse(selectedRows);
121 for (var column in rows) {
122 for (var i=0; i<rows[column].length; i++) {
123 jQuery("#wpda_row_export_form").append("<input type='hidden' name='" + column + "[]' value='" + rows[column][i] + "' />");
124 }
125 }
126
127 jQuery("#wpda_row_export_anchor").append(
128 "<button class='button button-primary wpda_row_export_button' onclick='return wpda_row_export_start();'>Download " + (formatType==='' ? 'SQL' : formatType) + " export</button>"
129 );
130 }
131
132 function wpda_show_notice( value ) {
133 if (
134 value==='bulk-delete' ||
135 value==='bulk-drop' ||
136 value==='bulk-truncate'
137 ) {
138 return confirm('You are about to permanently delete these items from your site.\nThis action cannot be undone.\n\'Cancel\' to stop, \'OK\' to delete.');
139 }
140 }
141
142 function wpda_action_button() {
143 action1 = jQuery("#wpda_main_form :input[name='action']").val();
144 if (action1!=="-1") {
145 return wpda_show_notice(action1);
146 }
147 action2 = jQuery("#wpda_main_form :input[name='action2']").val();
148 if (action2!=="-1") {
149 return wpda_show_notice(action2);
150 }
151 return true;
152 }
153
154 // Source: https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery
155 var entityMap = {
156 '&': '&amp;',
157 '<': '&lt;',
158 '>': '&gt;',
159 '"': '&quot;',
160 "'": '&#39;',
161 '/': '&#x2F;',
162 '`': '&#x60;',
163 '=': '&#x3D;'
164 };
165
166 // Source: https://stackoverflow.com/questions/24816/escaping-html-strings-with-jquery
167 function escapeHtml(string) {
168 return String(string).replace(/[&<>"'`=\/]/g, function (s) {
169 return entityMap[s];
170 });
171 }
172
173 function submit_table_settings(rownum, jsonstring, submitform, table_name) {
174 table_settings = {};
175
176 if (jQuery("input:radio[name ='" + table_name + "_row_count_estimate']:checked").val() === "true") {
177
178 table_settings['row_count_estimate'] = true;
179 } else if (jQuery("input:radio[name ='" + table_name + "_row_count_estimate']:checked").val() === "false") {
180 table_settings['row_count_estimate'] = false;
181 } else {
182 table_settings['row_count_estimate'] = null;
183 }
184
185 table_settings['row_count_estimate_value'] = jQuery("input:radio[name ='" + table_name + "_row_count_estimated_value']:checked").val();
186 table_settings['row_count_estimate_value_hard'] = jQuery("#" + table_name + "_row_count_estimated_value_hard").val();
187
188 table_settings['query_buffer_size'] =
189 jQuery('#' + table_name + '_query_buffer_size').val();
190
191 table_settings['row_level_security'] =
192 jQuery('#' + table_name + '_row_level_security').is(':checked') ? 'true' : 'false';
193
194 table_settings['hyperlink_definition'] =
195 jQuery('#' + table_name + 'table_top_setting_hyperlink_definition_json').is(':checked') ? 'json' : 'text';
196
197 jsonData = {};
198 jsonData['request_type'] = 'table_settings';
199 jsonData['table_settings'] = table_settings;
200 jsonData['unused'] = jQuery('#wpda_' + rownum + '_sql_dml').val();
201
202 // console.log(JSON.stringify(jsonData));
203 jQuery('#' + jsonstring).val(JSON.stringify(jsonData));
204 jQuery('#' + submitform).submit();
205 return false;
206 }
207
208 function submit_column_settings(rownum, jsonstring, submitform) {
209 custom_settings = {};
210 list_labels = {};
211 form_labels = {};
212 column_media = {};
213 unused = {};
214
215 jQuery('#wpda_table_settings_' + rownum + ' .wpda_table_setting_item').each(function () {
216 element_id = jQuery(this).attr('id');
217 element_value = jQuery(this).val();
218 element_type = jQuery(this).attr('type');
219 is_custom_element = false;
220 for (i=0; i<custom_column_settings.length; i++) {
221 if (element_id.startsWith(custom_column_settings[i])) {
222 element_name = element_id.substr(custom_column_settings[i].length);
223 if (element_type==="checkbox") {
224 element_value = jQuery(this).is(':checked');
225 }
226 custom_settings[element_id] = element_value;
227 is_custom_element = true;
228 }
229 }
230 if (!is_custom_element) {
231 if (element_id.startsWith("list_label_")) {
232 element_name = element_id.substr(11);
233 list_labels[element_name] = element_value;
234 } else if (element_id.startsWith("form_label_")) {
235 element_name = element_id.substr(11);
236 form_labels[element_name] = element_value;
237 } else if (element_id.startsWith("column_media_")) {
238 element_name = element_id.substr(13);
239 element_old_value = jQuery('#column_media_' + element_name + '_old').val();
240 if (element_value !== element_old_value) {
241 media_dml = jQuery('#column_media_' + element_name + '_dml').val();
242 column_media[element_name] = {'value': element_value, 'dml': media_dml};
243 }
244 }
245 }
246 });
247
248 unused["sql_dml"] = jQuery('#wpda_' + rownum + '_sql_dml').val();
249
250 jsonData = {};
251 jsonData['request_type'] = 'column_settings';
252 jsonData['custom_settings'] = custom_settings;
253 jsonData['list_labels'] = list_labels;
254 jsonData['form_labels'] = form_labels;
255 jsonData['column_media'] = column_media;
256 jsonData['unused'] = unused;
257
258 //console.log(JSON.stringify(jsonData));
259 jQuery('#' + jsonstring).val(JSON.stringify(jsonData));
260 jQuery('#' + submitform).submit();
261 return false;
262 }
263
264 function submit_hyperlinks(rownum, jsonstring, submitform) {
265 hyperlinks = [];
266 unused = {};
267 isvalid = true;
268
269 no_hyperlink = jQuery('#no_hyperlink_' + rownum).val();
270 if (isNaN(no_hyperlink)) {
271 return false;
272 }
273
274 for (hyperlink_no=0; hyperlink_no<=no_hyperlink;hyperlink_no++) {
275 if (jQuery('#' + rownum + '_hyperlink_label_' + hyperlink_no).length) {
276 hyperlink_label = jQuery('#' + rownum + '_hyperlink_label_' + hyperlink_no).val();
277 hyperlink_html = jQuery('#' + rownum + '_hyperlink_html_' + hyperlink_no).val();
278
279 hyperlink_label_old = jQuery('#' + rownum + '_hyperlink_label_' + hyperlink_no + '_old').val();
280 hyperlink_html_old = jQuery('#' + rownum + '_hyperlink_html_' + hyperlink_no + '_old').val();
281
282 if (hyperlink_label != '' && hyperlink_html != '') {
283 hyperlink_list = jQuery('#' + rownum + '_hyperlink_list_' + hyperlink_no).is(':checked');
284 hyperlink_form = jQuery('#' + rownum + '_hyperlink_form_' + hyperlink_no).is(':checked');
285 hyperlink_target = jQuery('#' + rownum + '_hyperlink_target_' + hyperlink_no).is(':checked');
286
287 hyperlink_item = {
288 'hyperlink_label': hyperlink_label,
289 'hyperlink_list': hyperlink_list,
290 'hyperlink_form': hyperlink_form,
291 'hyperlink_target': hyperlink_target,
292 'hyperlink_html': escapeHtml(hyperlink_html)
293 };
294 hyperlinks[hyperlink_no] = hyperlink_item;
295 } else {
296 if (hyperlink_label_old != '' || hyperlink_html_old != '') {
297 alert('Hyperlink label and HTML must be entered');
298 isvalid = false;
299 }
300 }
301 }
302 }
303
304 if (!isvalid) {
305 return false;
306 }
307
308 unused["sql_dml"] = jQuery('#wpda_' + rownum + '_sql_dml').val();
309
310 jsonData = {};
311 jsonData['request_type'] = 'column_settings';
312 jsonData['hyperlinks'] = hyperlinks;
313 jsonData['unused'] = unused;
314
315 //console.log(JSON.stringify(jsonData));
316 jQuery('#' + jsonstring).val(JSON.stringify(jsonData));
317 jQuery('#' + submitform).submit();
318 return false;
319 }
320
321 function submit_dashboard_menus(rownum, jsonstring, submitform) {
322 menu = {};
323 isvalid = true;
324
325 jQuery('#wpda_table_settings_' + rownum + ' .wpda_table_setting_item_menu').each(function () {
326 element_id = jQuery(this).attr('id');
327 element_value = jQuery(this).val();
328 element_type = jQuery(this).attr('type');
329
330 menu_no = element_id.substr(8);
331 menu_id = element_value;
332
333 menu_name = jQuery('#menu_name_' + menu_no).val();
334 menu_slug = jQuery('#menu_slug_' + menu_no).val();
335 menu_role = jQuery('#menu_roles_' + menu_no).val();
336
337 if ('' !== menu_name && '' !== menu_slug) {
338 menu_name_old = jQuery('#menu_name_' + menu_no + '_old').val();
339 menu_slug_old = jQuery('#menu_slug_' + menu_no + '_old').val();
340 menu_role_old = jQuery('#menu_roles_' + menu_no + '_old').val();
341 if (Array.isArray(menu_role)) {
342 menu_role_str = menu_role.toString();
343 } else {
344 menu_role_str = menu_role;
345 }
346 if (menu_name !== menu_name_old || menu_slug !== menu_slug_old || menu_role_old !== menu_role_str) {
347 menu_item = {
348 'menu_id': menu_id,
349 'menu_name': menu_name,
350 'menu_slug': menu_slug,
351 'menu_role': menu_role
352 };
353 menu[menu_no] = menu_item;
354 }
355 } else {
356 if (menu_id!=='') {
357 alert('Menu name and menu slug must be entered');
358 isvalid = false;
359 }
360 }
361 });
362
363 if (!isvalid) {
364 return false;
365 }
366
367 jsonData = {};
368 jsonData['request_type'] = 'dashboard_menus';
369 jsonData['menu'] = menu;
370
371 //console.log(JSON.stringify(jsonData));
372 jQuery('#' + jsonstring).val(JSON.stringify(jsonData));
373 jQuery('#' + submitform).submit();
374 return false;
375 }
376
377 function settab(rownum, tab) {
378 for (i = 1; i <= 6; i++) {
379 jQuery("#" + rownum + "-sel-" + i.toString()).removeClass('nav-tab-active');
380 jQuery("#" + rownum + "-tab-" + i.toString()).hide();
381 }
382 jQuery("#" + rownum + "-sel-" + tab).addClass('nav-tab-active');
383 jQuery("#" + rownum + "-tab-" + tab).show();
384 }
385
386 function backup_respository_tables(
387 table_settings_table_name,
388 media_table_name,
389 design_table_name,
390 data_projects_project_name,
391 data_projects_page_name,
392 data_projects_table_name,
393 data_publication_table_name,
394 menus_table_name,
395 csv_import_table_name,
396 logging_table_name
397 ) {
398 jQuery('#table_settings_table_name').val(table_settings_table_name);
399 jQuery('#media_table_name').val(media_table_name);
400 jQuery('#design_table_name').val(design_table_name);
401 jQuery('#data_projects_project_name').val(data_projects_project_name);
402 jQuery('#data_projects_page_name').val(data_projects_page_name);
403 jQuery('#data_projects_table_name').val(data_projects_table_name);
404 jQuery('#data_publication_table_name').val(data_publication_table_name);
405 jQuery('#menus_table_name').val(menus_table_name);
406 jQuery('#csv_import_table_name').val(csv_import_table_name);
407 jQuery('#logging_table_name').val(logging_table_name);
408
409 jQuery('#wpda-download-backup').submit();
410 }
411
412 function restore_respository_tables() {
413 if (!confirm("Restore repository tables? This action cannot be undone!\n\nIt might be wise to backup your actual repository tables first...")) {
414 return;
415 }
416
417 jQuery('#restore_table_settings_table_name').val(jQuery("input[name='restore_table_settings_table_name']:checked").val());
418 jQuery('#restore_media_table_name').val(jQuery("input[name='restore_media_table_name']:checked").val());
419 jQuery('#restore_design_table_name').val(jQuery("input[name='restore_design_table_name']:checked").val());
420 jQuery('#restore_data_projects_project_name').val(jQuery("input[name='restore_data_projects_project_name']:checked").val());
421 jQuery('#restore_data_projects_page_name').val(jQuery("input[name='restore_data_projects_project_name']:checked").val());
422 jQuery('#restore_data_projects_table_name').val(jQuery("input[name='restore_data_projects_table_name']:checked").val());
423 jQuery('#restore_data_publication_table_name').val(jQuery("input[name='restore_data_publication_table_name']:checked").val());
424 jQuery('#restore_menus_table_name').val(jQuery("input[name='restore_menus_table_name']:checked").val());
425 jQuery('#restore_csv_import_table_name').val(jQuery("input[name='restore_csv_import_table_name']:checked").val());
426 jQuery('#restore_logging_table_name').val(jQuery("input[name='restore_logging_table_name']:checked").val());
427
428 jQuery('#restore_date').val(jQuery('.wpda-restore-repository-backup-selected').data('backupDate'));
429
430 jQuery('#wpda-restore-respository').submit();
431 }
432
433 function get_table_row_count(wpnonce, schema_name, table_name) {
434 url = location.pathname + '?action=wpda_get_table_row_count';
435 jQuery.ajax({
436 method: 'POST',
437 url: url,
438 data: {
439 wpda_wpnonce: wpnonce,
440 wpdaschema_name: schema_name,
441 wpdatable_name: table_name
442 }
443 }).done(
444 function(msg) {
445 try {
446 json = JSON.parse(msg);
447 if (json[0].row_count === undefined) {
448 alert('Ajax error: row count failed');
449 } else {
450 jQuery("#" + table_name + "_row_count_estimated_value_hard").val(json[0].row_count);
451 }
452 } catch (e) {
453 alert('Ajax error: ' + e.message);
454 }
455 }
456 );
457 }
458
459 function expandFieldset(id) {
460 if (jQuery("#wpda_table_expand_" + id).is(":visible")) {
461 jQuery("#wpda_field_expand_" + id).text("add_circle");
462 jQuery("#wpda_fieldset_expand_" + id).val("off");
463 jQuery("#wpda_table_expand_" + id).css("display", "none");
464 } else {
465 jQuery("#wpda_field_expand_" + id).text("remove_circle");
466 jQuery("#wpda_fieldset_expand_" + id).val("on");
467 jQuery("#wpda_table_expand_" + id).css("display", "table");
468 }
469 }