Translated using Weblate (Korean)
[phpmyadmin.git] / js / server / databases.js
blob1ba961626ae3e805ac218624d2441faa63c21c6a
1 /**
2  * @fileoverview    functions used on the server databases list page
3  * @name            Server Databases
4  *
5  * @requires    jQuery
6  * @requires    jQueryUI
7  * @required    js/functions.js
8  */
10 /* global MicroHistory */ // js/microhistory.js
12 /**
13  * Unbind all event handlers before tearing down a page
14  */
15 AJAX.registerTeardown('server/databases.js', function () {
16     $(document).off('submit', '#dbStatsForm');
17     $(document).off('submit', '#create_database_form.ajax');
18 });
20 /**
21  * AJAX scripts for /server/databases
22  *
23  * Actions ajaxified here:
24  * Drop Databases
25  *
26  */
27 AJAX.registerOnload('server/databases.js', function () {
28     /**
29      * Attach Event Handler for 'Drop Databases'
30      */
31     $(document).on('submit', '#dbStatsForm', function (event) {
32         event.preventDefault();
34         var $form = $(this);
36         /**
37          * @var selected_dbs Array containing the names of the checked databases
38          */
39         var selectedDbs = [];
40         // loop over all checked checkboxes, except the .checkall_box checkbox
41         $form.find('input:checkbox:checked:not(.checkall_box)').each(function () {
42             $(this).closest('tr').addClass('removeMe');
43             selectedDbs[selectedDbs.length] = 'DROP DATABASE `' + Functions.escapeHtml($(this).val()) + '`;';
44         });
45         if (! selectedDbs.length) {
46             Functions.ajaxShowMessage(
47                 $('<div class="alert alert-primary" role="alert"></div>').text(
48                     Messages.strNoDatabasesSelected
49                 ),
50                 2000
51             );
52             return;
53         }
54         /**
55          * @var question    String containing the question to be asked for confirmation
56          */
57         var question = Messages.strDropDatabaseStrongWarning + ' ' +
58             Functions.sprintf(Messages.strDoYouReally, selectedDbs.join('<br>'));
60         var argsep = CommonParams.get('arg_separator');
61         $(this).confirm(
62             question,
63             'index.php?route=/server/databases/destroy&' + $(this).serialize() +
64                 argsep + 'drop_selected_dbs=1',
65             function (url) {
66                 Functions.ajaxShowMessage(Messages.strProcessingRequest, false);
68                 var parts = url.split('?');
69                 var params = Functions.getJsConfirmCommonParam(this, parts[1]);
71                 $.post(parts[0], params, function (data) {
72                     if (typeof data !== 'undefined' && data.success === true) {
73                         Functions.ajaxShowMessage(data.message);
75                         var $rowsToRemove = $form.find('tr.removeMe');
76                         var $databasesCount = $('#filter-rows-count');
77                         var newCount = parseInt($databasesCount.text(), 10) - $rowsToRemove.length;
78                         $databasesCount.text(newCount);
80                         $rowsToRemove.remove();
81                         $form.find('tbody').sortTable('.name');
82                         if ($form.find('tbody').find('tr').length === 0) {
83                             // user just dropped the last db on this page
84                             CommonActions.refreshMain();
85                         }
86                         Navigation.reload();
87                     } else {
88                         $form.find('tr.removeMe').removeClass('removeMe');
89                         Functions.ajaxShowMessage(data.error, false);
90                     }
91                 }); // end $.post()
92             }
93         );
94     }); // end of Drop Database action
96     /**
97      * Attach Ajax event handlers for 'Create Database'.
98      */
99     $(document).on('submit', '#create_database_form.ajax', function (event) {
100         event.preventDefault();
102         var $form = $(this);
104         // TODO Remove this section when all browsers support HTML5 "required" property
105         var newDbNameInput = $form.find('input[name=new_db]');
106         if (newDbNameInput.val() === '') {
107             newDbNameInput.trigger('focus');
108             alert(Messages.strFormEmpty);
109             return;
110         }
111         // end remove
113         Functions.ajaxShowMessage(Messages.strProcessingRequest);
114         Functions.prepareForAjaxRequest($form);
116         $.post($form.attr('action'), $form.serialize(), function (data) {
117             if (typeof data !== 'undefined' && data.success === true) {
118                 Functions.ajaxShowMessage(data.message);
120                 var $databasesCountObject = $('#filter-rows-count');
121                 var databasesCount = parseInt($databasesCountObject.text(), 10) + 1;
122                 $databasesCountObject.text(databasesCount);
123                 Navigation.reload();
125                 // make ajax request to load db structure page - taken from ajax.js
126                 var dbStructUrl = data.url_query;
127                 dbStructUrl = dbStructUrl.replace(/amp;/ig, '');
128                 var params = 'ajax_request=true' + CommonParams.get('arg_separator') + 'ajax_page_request=true';
129                 if (! (history && history.pushState)) {
130                     params += MicroHistory.menus.getRequestParam();
131                 }
132                 $.get(dbStructUrl, params, AJAX.responseHandler);
133             } else {
134                 Functions.ajaxShowMessage(data.error, false);
135             }
136         }); // end $.post()
137     }); // end $(document).on()
139     /* Don't show filter if number of databases are very few */
140     var databasesCount = $('#filter-rows-count').html();
141     if (databasesCount <= 10) {
142         $('#tableFilter').hide();
143     }
145     var tableRows = $('.server_databases');
146     $.each(tableRows, function () {
147         $(this).on('click', function () {
148             CommonActions.setDb($(this).attr('data'));
149         });
150     });
151 }); // end $()