UPDATE 4.4.0.0
[phpmyadmin.git] / js / normalization.js
blobd23adf6ea90fd89ff79e56405ea20ee431574bf5
1 /* vim: set expandtab sw=4 ts=4 sts=4: */
2 /**
3  * @fileoverview   events handling from normalization page
4  * @name            normalization
5  *
6  * @requires    jQuery
7  */
9 /**
10  * AJAX scripts for normalization.php
11  *
12  */
14 var normalizeto = '1nf';
15 var primary_key;
16 function appendHtmlColumnsList()
18     $.get(
19         "normalization.php",
20         {
21             "token": PMA_commonParams.get('token'),
22             "ajax_request": true,
23             "db": PMA_commonParams.get('db'),
24             "table": PMA_commonParams.get('table'),
25             "getColumns": true
26         },
27         function(data) {
28             if (data.success === true) {
29                 $('select[name=makeAtomic]').html(data.message);
30             }
31         }
32     );
34 function goTo3NFStep1(newTables)
36     if (Object.keys(newTables).length === 1) {
37         newTables = [PMA_commonParams.get('table')];
38     }
39     $.post(
40         "normalization.php",
41         {
42             "token": PMA_commonParams.get('token'),
43             "ajax_request": true,
44             "db": PMA_commonParams.get('db'),
45             "tables": newTables,
46             "step": '3.1'
47         }, function(data) {
48             $("#page_content h3").html(PMA_messages.str3NFNormalization);
49             $("#mainContent legend").html(data.legendText);
50             $("#mainContent h4").html(data.headText);
51             $("#mainContent p").html(data.subText);
52             $("#mainContent #extra").html(data.extra);
53             $("#extra form").each(function() {
54                 form_id = $(this).attr('id');
55                 colname = $(this).data('colname');
56                 $("#"+form_id+" input[value='"+colname+"']").next().remove();
57                 $("#"+form_id+" input[value='"+colname+"']").remove();
58             });
59             $("#mainContent #newCols").html('');
60             $('.tblFooters').html('');
61             if (data.subText !== "") {
62                 $('.tblFooters').html('<input type="button" onClick="processDependencies(\'\', true);" value="'+PMA_messages.strDone+'"/>');
63             }
64         }
65     );
67 function goTo2NFStep1() {
68     $.post(
69         "normalization.php",
70         {
71             "token": PMA_commonParams.get('token'),
72             "ajax_request": true,
73             "db": PMA_commonParams.get('db'),
74             "table": PMA_commonParams.get('table'),
75             "step": '2.1'
76         }, function(data) {
77             $("#page_content h3").html(PMA_messages.str2NFNormalization);
78             $("#mainContent legend").html(data.legendText);
79             $("#mainContent h4").html(data.headText);
80             $("#mainContent p").html(data.subText);
81             $("#mainContent #extra").html(data.extra);
82             $("#mainContent #newCols").html('');
83             if (data.subText !== '') {
84                 $('.tblFooters').html('<input type="submit" value="'+PMA_messages.strDone+'" onclick="processDependencies(\''+data.primary_key+'\');">');
85             } else {
86                 if (normalizeto === '3nf') {
87                     $("#mainContent #newCols").html(PMA_messages.strToNextStep);
88                     setTimeout(function() {
89                         goTo3NFStep1([PMA_commonParams.get('table')]);
90                     }, 3000);
91                 }
92             }
93         });
96 function goToFinish1NF()
98     if (normalizeto !== '1nf') {
99         goTo2NFStep1();
100         return true;
101     }
102     $("#mainContent legend").html(PMA_messages.strEndStep);
103     $("#mainContent h4").html(
104         "<h3>" + PMA_sprintf(PMA_messages.strFinishMsg, PMA_commonParams.get('table')) + "</h3>"
105     );
106     $("#mainContent p").html('');
107     $("#mainContent #extra").html('');
108     $("#mainContent #newCols").html('');
109     $('.tblFooters').html('');
112 function goToStep4()
114     $.post(
115         "normalization.php",
116         {
117             "token": PMA_commonParams.get('token'),
118             "ajax_request": true,
119             "db": PMA_commonParams.get('db'),
120             "table": PMA_commonParams.get('table'),
121             "step4": true
122         }, function(data) {
123             $("#mainContent legend").html(data.legendText);
124             $("#mainContent h4").html(data.headText);
125             $("#mainContent p").html(data.subText);
126             $("#mainContent #extra").html(data.extra);
127             $("#mainContent #newCols").html('');
128             $('.tblFooters').html('');
129             for(var pk in primary_key) {
130                 $("#extra input[value='"+primary_key[pk]+"']").attr("disabled","disabled");
131             }
132         }
133     );
136 function goToStep3()
138     $.post(
139         "normalization.php",
140         {
141             "token": PMA_commonParams.get('token'),
142             "ajax_request": true,
143             "db": PMA_commonParams.get('db'),
144             "table": PMA_commonParams.get('table'),
145             "step3": true
146         }, function(data) {
147             $("#mainContent legend").html(data.legendText);
148             $("#mainContent h4").html(data.headText);
149             $("#mainContent p").html(data.subText);
150             $("#mainContent #extra").html(data.extra);
151             $("#mainContent #newCols").html('');
152             $('.tblFooters').html('');
153             primary_key = $.parseJSON(data.primary_key);
154             for(var pk in primary_key) {
155                 $("#extra input[value='"+primary_key[pk]+"']").attr("disabled","disabled");
156             }
157         }
158     );
161 function goToStep2(extra)
163     $.post(
164         "normalization.php",
165         {
166             "token": PMA_commonParams.get('token'),
167             "ajax_request": true,
168             "db": PMA_commonParams.get('db'),
169             "table": PMA_commonParams.get('table'),
170             "step2": true
171         }, function(data) {
172             $("#mainContent legend").html(data.legendText);
173             $("#mainContent h4").html(data.headText);
174             $("#mainContent p").html(data.subText);
175             $("#mainContent #extra,#mainContent #newCols").html('');
176             $('.tblFooters').html('');
177             if (data.hasPrimaryKey === "1") {
178                 if(extra === 'goToStep3') {
179                     $("#mainContent h4").html(PMA_messages.strPrimaryKeyAdded);
180                     $("#mainContent p").html(PMA_messages.strToNextStep);
181                 }
182                 if(extra === 'goToFinish1NF') {
183                     goToFinish1NF();
184                 } else {
185                     setTimeout(function() {
186                         goToStep3();
187                     }, 3000);
188                 }
189             } else {
190                 //form to select columns to make primary
191                 $("#mainContent #extra").html(data.extra);
192             }
193         }
194     );
197 function goTo2NFFinish(pd)
199     var tables = {};
200     for (var dependson in pd) {
201         tables[dependson] = $('#extra input[name="'+dependson+'"]').val();
202     }
203     datastring = {"token": PMA_commonParams.get('token'),
204             "ajax_request": true,
205             "db": PMA_commonParams.get('db'),
206             "table": PMA_commonParams.get('table'),
207             "pd": JSON.stringify(pd),
208             "newTablesName":JSON.stringify(tables),
209             "createNewTables2NF":1};
210     $.ajax({
211             type: "GET",
212             url: "normalization.php",
213             data: datastring,
214             async:false,
215             success: function(data) {
216                 if (data.success === true) {
217                     if(data.queryError === false) {
218                         if (normalizeto === '3nf') {
219                             $("#pma_navigation_reload").click();
220                             goTo3NFStep1(tables);
221                             return true;
222                         }
223                         $("#mainContent legend").html(data.legendText);
224                         $("#mainContent h4").html(data.headText);
225                         $("#mainContent p").html('');
226                         $("#mainContent #extra").html('');
227                         $('.tblFooters').html('');
228                     } else {
229                         PMA_ajaxShowMessage(data.extra, false);
230                     }
231                     $("#pma_navigation_reload").click();
232                 } else {
233                     PMA_ajaxShowMessage(data.error, false);
234                 }
235             }
236         });
239 function goTo3NFFinish(newTables)
241     for (var table in newTables) {
242         for (var newtbl in newTables[table]) {
243             updatedname = $('#extra input[name="'+newtbl+'"]').val();
244             newTables[table][updatedname] = newTables[table][newtbl];
245             if (updatedname !== newtbl) {
246                 delete newTables[table][newtbl];
247             }
248         }
249     }
250     datastring = {"token": PMA_commonParams.get('token'),
251             "ajax_request": true,
252             "db": PMA_commonParams.get('db'),
253             "newTables":JSON.stringify(newTables),
254             "createNewTables3NF":1};
255     $.ajax({
256             type: "GET",
257             url: "normalization.php",
258             data: datastring,
259             async:false,
260             success: function(data) {
261                 if (data.success === true) {
262                     if(data.queryError === false) {
263                         $("#mainContent legend").html(data.legendText);
264                         $("#mainContent h4").html(data.headText);
265                         $("#mainContent p").html('');
266                         $("#mainContent #extra").html('');
267                         $('.tblFooters').html('');
268                     } else {
269                         PMA_ajaxShowMessage(data.extra, false);
270                     }
271                     $("#pma_navigation_reload").click();
272                 } else {
273                     PMA_ajaxShowMessage(data.error, false);
274                 }
275             }
276         });
278 var backup = '';
279 function goTo2NFStep2(pd, primary_key)
281     $("#newCols").html('');
282     $("#mainContent legend").html(PMA_messages.strStep+' 2.2 '+PMA_messages.strConfirmPd);
283     $("#mainContent h4").html(PMA_messages.strSelectedPd);
284     $("#mainContent p").html(PMA_messages.strPdHintNote);
285     var extra = '<div class="dependencies_box">';
286     var pdFound = false;
287     for (var dependson in pd) {
288         if (dependson !== primary_key) {
289             pdFound = true;
290             extra += '<p class="displayblock desc">'+escapeHtml(dependson) +" -> "+escapeHtml(pd[dependson].toString())+'</p>';
291         }
292     }
293     if(!pdFound) {
294         extra += '<p class="displayblock desc">'+PMA_messages.strNoPdSelected+'</p>';
295         extra += '</div>';
296     } else {
297         extra += '</div>';
298         datastring = {"token": PMA_commonParams.get('token'),
299             "ajax_request": true,
300             "db": PMA_commonParams.get('db'),
301             "table": PMA_commonParams.get('table'),
302             "pd": JSON.stringify(pd),
303             "getNewTables2NF":1};
304         $.ajax({
305             type: "GET",
306             url: "normalization.php",
307             data: datastring,
308             async:false,
309             success: function(data) {
310                 if (data.success === true) {
311                     extra += data.message;
312                 } else {
313                     PMA_ajaxShowMessage(data.error, false);
314                 }
315             }
316         });
317     }
318     $("#mainContent #extra").html(extra);
319     $('.tblFooters').html('<input type="button" value="'+PMA_messages.strBack+'" id="backEditPd"/><input type="button" id="goTo2NFFinish" value="'+PMA_messages.strGo+'"/>');
320     $("#goTo2NFFinish").click(function(){
321         goTo2NFFinish(pd);
322     });
325 function goTo3NFStep2(pd, tablesTds)
327     $("#newCols").html('');
328     $("#mainContent legend").html(PMA_messages.strStep+' 3.2 '+PMA_messages.strConfirmTd);
329     $("#mainContent h4").html(PMA_messages.strSelectedTd);
330     $("#mainContent p").html(PMA_messages.strPdHintNote);
331     var extra = '<div class="dependencies_box">';
332     var pdFound = false;
333     for (var table in tablesTds) {
334         for (var i in tablesTds[table]) {
335             dependson = tablesTds[table][i];
336             if (dependson !== '' && dependson !== table) {
337                 pdFound = true;
338                 extra += '<p class="displayblock desc">'+escapeHtml(dependson) +" -> "+escapeHtml(pd[dependson].toString())+'</p>';
339             }
340         }
341     }
342     if(!pdFound) {
343         extra += '<p class="displayblock desc">'+PMA_messages.strNoTdSelected+'</p>';
344         extra += '</div>';
345     } else {
346         extra += '</div>';
347         datastring = {"token": PMA_commonParams.get('token'),
348             "ajax_request": true,
349             "db": PMA_commonParams.get('db'),
350             "tables": JSON.stringify(tablesTds),
351             "pd": JSON.stringify(pd),
352             "getNewTables3NF":1};
353         $.ajax({
354             type: "GET",
355             url: "normalization.php",
356             data: datastring,
357             async:false,
358             success: function(data) {
359                 data_parsed = $.parseJSON(data.message);
360                 if (data.success === true) {
361                     extra += data_parsed.html;
362                 } else {
363                     PMA_ajaxShowMessage(data.error, false);
364                 }
365             }
366         });
367     }
368     $("#mainContent #extra").html(extra);
369     $('.tblFooters').html('<input type="button" value="'+PMA_messages.strBack+'" id="backEditPd"/><input type="button" id="goTo3NFFinish" value="'+PMA_messages.strGo+'"/>');
370     $("#goTo3NFFinish").click(function(){
371         if (!pdFound) {
372             goTo3NFFinish([]);
373         } else {
374             goTo3NFFinish(data_parsed.newTables);
375         }
376     });
378 function processDependencies(primary_key, isTransitive)
380     var pd = {};
381     var tablesTds = {};
382     var dependsOn;
383     pd[primary_key] = [];
384     $("#extra form").each(function() {
385         if (isTransitive === true) {
386             tblname = $(this).data('tablename');
387             primary_key = tblname;
388             if (!(tblname in tablesTds)) {
389                 tablesTds[tblname] = [];
390             }
391             tablesTds[tblname].push(primary_key);
392         }
393         form_id = $(this).attr('id');
394         $('#'+form_id+' input[type=checkbox]:not(:checked)').removeAttr('checked');
395         dependsOn = '';
396         $('#'+form_id+' input[type=checkbox]:checked').each(function(){
397             dependsOn += $(this).val()+', ';
398             $(this).attr("checked","checked");
399         });
400         if (dependsOn === '') {
401             dependsOn = primary_key;
402         } else {
403             dependsOn = dependsOn.slice(0, -2);
404         }
405         if (! (dependsOn in pd)) {
406             pd[dependsOn] = [];
407         }
408         pd[dependsOn].push($(this).data('colname'));
409         if (isTransitive === true) {
410             if (!(tblname in tablesTds)) {
411                 tablesTds[tblname] = [];
412             }
413             if ($.inArray(dependsOn, tablesTds[tblname]) === -1) {
414                 tablesTds[tblname].push(dependsOn);
415             }
416         }
417     });
418     backup = $("#mainContent").html();
419     if (isTransitive === true) {
420         goTo3NFStep2(pd, tablesTds);
421     } else {
422         goTo2NFStep2(pd, primary_key);
423     }
424     return false;
427 function moveRepeatingGroup(repeatingCols) {
428     newTable = $("input[name=repeatGroupTable]").val();
429     newColumn = $("input[name=repeatGroupColumn]").val();
430     if (!newTable) {
431         $("input[name=repeatGroupTable]").focus();
432         return false;
433     }
434     if (!newColumn) {
435         $("input[name=repeatGroupColumn]").focus();
436         return false;
437     }
438     datastring = {"token": PMA_commonParams.get('token'),
439         "ajax_request": true,
440         "db": PMA_commonParams.get('db'),
441         "table": PMA_commonParams.get('table'),
442         "repeatingColumns": repeatingCols,
443         "newTable":newTable,
444         "newColumn":newColumn,
445         "primary_columns":primary_key.toString()
446     };
447     $.ajax({
448         type: "POST",
449         url: "normalization.php",
450         data: datastring,
451         async:false,
452         success: function(data) {
453             if (data.success === true) {
454                 if(data.queryError === false) {
455                     goToStep3();
456                 }
457                 PMA_ajaxShowMessage(data.message, false);
458                 $("#pma_navigation_reload").click();
459             } else {
460                 PMA_ajaxShowMessage(data.error, false);
461             }
462         }
463     });
465 AJAX.registerTeardown('normalization.js', function () {
466     $("#extra").off("click", "#selectNonAtomicCol");
467     $("#splitGo").unbind('click');
468     $('.tblFooters').off("click", "#saveSplit");
469     $("#extra").off("click", "#addNewPrimary");
470     $(".tblFooters").off("click", "#saveNewPrimary");
471     $("#extra").off("click", "#removeRedundant");
472     $("#mainContent p").off("click", "#createPrimaryKey");
473     $("#mainContent").off("click", "#backEditPd");
474     $("#mainContent").off("click", "#showPossiblePd");
475     $("#mainContent").off("click", ".pickPd");
478 AJAX.registerOnload('normalization.js', function() {
479     var selectedCol;
480     normalizeto = $("#mainContent").data('normalizeto');
481     $("#extra").on("click", "#selectNonAtomicCol", function() {
482         if ($(this).val() === 'no_such_col') {
483             goToStep2();
484         } else {
485             selectedCol = $(this).val();
486         }
487     });
489     $("#splitGo").click(function() {
490         if(!selectedCol || selectedCol === '') {
491             return false;
492         }
493         var numField = $("#numField").val();
494         $.get(
495             "normalization.php",
496             {
497                 "token": PMA_commonParams.get('token'),
498                 "ajax_request": true,
499                 "db": PMA_commonParams.get('db'),
500                 "table": PMA_commonParams.get('table'),
501                 "splitColumn": true,
502                 "numFields": numField
503             },
504         function(data) {
505                 if (data.success === true) {
506                     $('#newCols').html(data.message);
507                     $('.default_value').hide();
508                     $('.enum_notice').hide();
509                     $('.tblFooters').html("<input type='submit' id='saveSplit' value='"+PMA_messages.strSave+"'/>" +
510                         "<input type='submit' id='cancelSplit' value='"+PMA_messages.strCancel+"' "+
511                         "onclick=\"$('#newCols').html('');$(this).parent().html('')\"/>");
512                 }
513             }
514         );
515         return false;
516     });
517     $('.tblFooters').on("click","#saveSplit", function() {
518         central_column_list = [];
519         if ($("#newCols #field_0_1").val() === '') {
520             $("#newCols #field_0_1").focus();
521             return false;
522         }
523         datastring = $('#newCols :input').serialize();
524         datastring += "&ajax_request=1&do_save_data=1&field_where=last";
525         $.post("tbl_addfield.php", datastring, function(data) {
526             if (data.success) {
527                 $.get(
528                     "sql.php",
529                     {
530                         "token": PMA_commonParams.get('token'),
531                         "ajax_request": true,
532                         "db": PMA_commonParams.get('db'),
533                         "table": PMA_commonParams.get('table'),
534                         "dropped_column": selectedCol,
535                         "sql_query": 'ALTER TABLE `' + PMA_commonParams.get('table') + '` DROP `' + selectedCol + '`;',
536                         "is_js_confirmed": 1
537                     },
538                 function(data) {
539                         if (data.success === true) {
540                             appendHtmlColumnsList();
541                             $('#newCols').html('');
542                             $('.tblFooters').html('');
543                         } else {
544                             PMA_ajaxShowMessage(data.error, false);
545                         }
546                         selectedCol = '';
547                     }
548                 );
549             } else {
550                 PMA_ajaxShowMessage(data.error, false);
551             }
552         });
553     });
555     $("#extra").on("click", "#addNewPrimary", function() {
556         $.get(
557             "normalization.php",
558             {
559                 "token": PMA_commonParams.get('token'),
560                 "ajax_request": true,
561                 "db": PMA_commonParams.get('db'),
562                 "table": PMA_commonParams.get('table'),
563                 "addNewPrimary": true
564             },
565         function(data) {
566                 if (data.success === true) {
567                     $('#newCols').html(data.message);
568                     $('.default_value').hide();
569                     $('.enum_notice').hide();
570                     $('.tblFooters').html("<input type='submit' id='saveNewPrimary' value='"+PMA_messages.strSave+"'/>" +
571                         "<input type='submit' id='cancelSplit' value='"+PMA_messages.strCancel+"' "+
572                         "onclick=\"$('#newCols').html('');$(this).parent().html('')\"/>");
573                 } else {
574                     PMA_ajaxShowMessage(data.error, false);
575                 }
576             }
577         );
578         return false;
579     });
580     $(".tblFooters").on("click", "#saveNewPrimary", function() {
581         datastring = $('#newCols :input').serialize();
582         datastring += "&field_key[0]=primary_0&ajax_request=1&do_save_data=1&field_where=last";
583         $.post("tbl_addfield.php", datastring, function(data) {
584             if (data.success === true) {
585                 $("#mainContent h4").html(PMA_messages.strPrimaryKeyAdded);
586                 $("#mainContent p").html(PMA_messages.strToNextStep);
587                 $("#mainContent #extra").html('');
588                 $("#mainContent #newCols").html('');
589                 $('.tblFooters').html('');
590                 setTimeout(function() {
591                     goToStep3();
592                 }, 2000);
593             } else {
594                 PMA_ajaxShowMessage(data.error, false);
595             }
596         });
597     });
598     $("#extra").on("click", "#removeRedundant", function() {
599         var dropQuery = 'ALTER TABLE `' + PMA_commonParams.get('table') + '` ';
600         $("#extra input[type=checkbox]:checked").each(function() {
601             dropQuery += 'DROP `' + $(this).val() + '`, ';
602         });
603         dropQuery = dropQuery.slice(0, -2);
604         $.get(
605             "sql.php",
606             {
607                 "token": PMA_commonParams.get('token'),
608                 "ajax_request": true,
609                 "db": PMA_commonParams.get('db'),
610                 "table": PMA_commonParams.get('table'),
611                 "sql_query": dropQuery,
612                 "is_js_confirmed": 1
613             },
614         function(data) {
615                 if (data.success === true) {
616                     goToStep2('goToFinish1NF');
617                 } else {
618                     PMA_ajaxShowMessage(data.error, false);
619                 }
620             }
621         );
622     });
623     $("#extra").on("click", "#moveRepeatingGroup", function() {
624         var repeatingCols = '';
625         $("#extra input[type=checkbox]:checked").each(function() {
626             repeatingCols += $(this).val() + ', ';
627         });
629         if (repeatingCols !== '') {
630             newColName = $("#extra input[type=checkbox]:checked:first").val();
631             repeatingCols = repeatingCols.slice(0, -2);
632             confirmStr = PMA_sprintf(PMA_messages.strMoveRepeatingGroup, escapeHtml(repeatingCols), escapeHtml(PMA_commonParams.get('table')));
633             confirmStr += '<input type="text" name="repeatGroupTable" placeholder="'+PMA_messages.strNewTablePlaceholder+'"/>'+
634                 '( '+escapeHtml(primary_key.toString())+', <input type="text" name="repeatGroupColumn" placeholder="'+PMA_messages.strNewColumnPlaceholder+'" value="'+escapeHtml(newColName)+'">)'+
635                 '</ol>';
636             $("#newCols").html(confirmStr);
637             $('.tblFooters').html('<input type="submit" value="'+PMA_messages.strCancel+'" onclick="$(\'#newCols\').html(\'\');$(\'#extra input[type=checkbox]\').removeAttr(\'checked\')"/>'+
638                 '<input type="submit" value="'+PMA_messages.strGo+'" onclick="moveRepeatingGroup(\''+repeatingCols+'\')"/>');
639         }
640     });
641     $("#mainContent p").on("click", "#createPrimaryKey", function(event) {
642         event.preventDefault();
643         var url = { create_index: 1,
644             server:  PMA_commonParams.get('server'),
645             db: PMA_commonParams.get('db'),
646             table: PMA_commonParams.get('table'),
647             token: PMA_commonParams.get('token'),
648             added_fields: 1,
649             add_fields:1,
650             index: {Key_name:'PRIMARY'},
651             ajax_request: true
652         };
653         var title = PMA_messages.strAddPrimaryKey;
654         indexEditorDialog(url, title, function(){
655             //on success
656             $(".sqlqueryresults").remove();
657             $('.result_query').remove();
658             $('.tblFooters').html('');
659             goToStep2('goToStep3');
660         });
661         return false;
662     });
663     $("#mainContent").on("click", "#backEditPd", function(){
664         $("#mainContent").html(backup);
665     });
666     $("#mainContent").on("click", "#showPossiblePd", function(){
667         if($(this).hasClass('hideList')) {
668             $(this).html('+ '+PMA_messages.strShowPossiblePd);
669             $(this).removeClass('hideList');
670             $("#newCols").slideToggle("slow");
671             return false;
672         }
673         if($("#newCols").html() !== '') {
674             $("#showPossiblePd").html('- '+PMA_messages.strHidePd);
675             $("#showPossiblePd").addClass('hideList');
676             $("#newCols").slideToggle("slow");
677             return false;
678         }
679         $("#newCols").insertAfter("#mainContent h4");
680         $("#newCols").html('<div class="center">'+PMA_messages.strLoading+'<br/>'+PMA_messages.strWaitForPd+'</div>');
681         $.post(
682         "normalization.php",
683         {
684             "token": PMA_commonParams.get('token'),
685             "ajax_request": true,
686             "db": PMA_commonParams.get('db'),
687             "table": PMA_commonParams.get('table'),
688             "findPdl": true
689         }, function(data) {
690             $("#showPossiblePd").html('- '+PMA_messages.strHidePd);
691             $("#showPossiblePd").addClass('hideList');
692             $("#newCols").html(data.message);
693         });
694     });
695     $("#mainContent").on("click", ".pickPd", function(){
696         var strColsLeft = $(this).next('.determinants').html();
697         var colsLeft = strColsLeft.split(',');
698         var strColsRight = $(this).next().next().html();
699         var colsRight = strColsRight.split(',');
700         for (var i in colsRight) {
701             $('form[data-colname="'+colsRight[i].trim()+'"] input[type="checkbox"]').prop('checked', false);
702             for (var j in colsLeft) {
703                 $('form[data-colname="'+colsRight[i].trim()+'"] input[value="'+colsLeft[j].trim()+'"]').prop('checked', true);
704             }
705         }
706     });