Translated using Weblate (Bengali)
[phpmyadmin.git] / js / db_search.js
blobe38534ae8e7b4500a18729c6495c15ce18927b4a
1 /* vim: set expandtab sw=4 ts=4 sts=4: */
2 /**
3  * JavaScript functions used on Database Search page
4  *
5  * @requires    jQuery
6  * @requires    js/functions.js
7  *
8  * @package PhpMyAdmin
9  */
11 /**
12  * AJAX script for the Database Search page.
13  *
14  * Actions ajaxified here:
15  * Retrieve result of SQL query
16  */
18 /**
19  * Unbind all event handlers before tearing down a page
20  */
21 AJAX.registerTeardown('db_search.js', function () {
22     $('a.browse_results').unbind('click');
23     $('a.delete_results').unbind('click');
24     $('#buttonGo').unbind('click');
25     $('#togglesearchresultlink').unbind('click');
26     $("#togglequerybox").unbind('click');
27     $('#togglesearchformlink').unbind('click');
28     $(document).off('submit', "#db_search_form.ajax");
29 });
31 AJAX.registerOnload('db_search.js', function () {
32     /** Hide the table link in the initial search result */
33     var icon = PMA_getImage('s_tbl.png', '', {'id': 'table-image'}).toString();
34     $("#table-info").prepend(icon).hide();
36     /** Hide the browse and deleted results in the new search criteria */
37     $('#buttonGo').click(function () {
38         $("#table-info").hide();
39         $('#browse-results').hide();
40         $('#sqlqueryform').hide();
41         $('#togglequerybox').hide();
42     });
43     /**
44      * Prepare a div containing a link for toggle the search results
45      */
46     $('#togglesearchresultsdiv')
47     /** don't show it until we have results on-screen */
48     .hide();
50     /**
51      * Changing the displayed text according to
52      * the hide/show criteria in search result forms
53      */
54     $('#togglesearchresultlink')
55     .html(PMA_messages.strHideSearchResults)
56     .bind('click', function () {
57         var $link = $(this);
58         $('#searchresults').slideToggle();
59         if ($link.text() == PMA_messages.strHideSearchResults) {
60             $link.text(PMA_messages.strShowSearchResults);
61         } else {
62             $link.text(PMA_messages.strHideSearchResults);
63         }
64         /** avoid default click action */
65         return false;
66     });
68     /**
69      * Prepare a div containing a link for toggle the search form,
70      * otherwise it's incorrectly displayed after a couple of clicks
71      */
72     $('#togglesearchformdiv')
73     .hide(); // don't show it until we have results on-screen
75     /**
76      * Changing the displayed text according to
77      * the hide/show criteria in search form
78      */
79     $("#togglequerybox")
80     .hide()
81     .bind('click', function () {
82         var $link = $(this);
83         $('#sqlqueryform').slideToggle("medium");
84         if ($link.text() == PMA_messages.strHideQueryBox) {
85             $link.text(PMA_messages.strShowQueryBox);
86         } else {
87             $link.text(PMA_messages.strHideQueryBox);
88         }
89         /** avoid default click action */
90         return false;
91     });
93     /** don't show it until we have results on-screen */
95     /**
96      * Changing the displayed text according to
97      * the hide/show criteria in search criteria form
98      */
99     $('#togglesearchformlink')
100        .html(PMA_messages.strShowSearchCriteria)
101        .bind('click', function () {
102             var $link = $(this);
103             $('#db_search_form').slideToggle();
104             if ($link.text() == PMA_messages.strHideSearchCriteria) {
105                 $link.text(PMA_messages.strShowSearchCriteria);
106             } else {
107                 $link.text(PMA_messages.strHideSearchCriteria);
108             }
109             /** avoid default click action */
110             return false;
111         });
113     /*
114      * Ajax Event handler for retrieving the results from a table
115      */
116     $(document).on('click', 'a.browse_results', function(e){
117         e.preventDefault();
118         /**   Hides the results shown by the delete criteria */
119         var $msg = PMA_ajaxShowMessage(PMA_messages.strBrowsing, false);
120         $('#sqlqueryform').hide();
121         $('#togglequerybox').hide();
122         /**  Load the browse results to the page */
123         $("#table-info").show();
124         var table_name = $(this).data('table-name');
125         $('#table-link').attr({"href" : $(this).attr('href')}).text(table_name);
127         var url = $(this).attr('href') + "#searchresults";
128         var browse_sql = $(this).data('browse-sql');
129         var params = {
130             'ajax_request': true,
131             'is_js_confirmed': true,
132             'sql_query' : browse_sql,
133             'token' : PMA_commonParams.get('token')
134         };
135         $.post(url, params, function (data) {
136             if (typeof data !== 'undefined' && data.success) {
137                 $('#browse-results').html(data.message);
138                 PMA_ajaxRemoveMessage($msg);
139                 $('.table_results').each(function () {
140                     PMA_makegrid(this, true, true, true, true);
141                 });
142                 $('#browse-results').show();
143                 PMA_highlightSQL($('#browse-results'));
144                 $('html, body')
145                     .animate({
146                         scrollTop: $("#browse-results").offset().top
147                     }, 1000);
148             } else {
149                 PMA_ajaxShowMessage(data.error, false);
150             }
151         });
152     });
154     /*
155      * Ajax Event handler for deleting the results from a table
156      */
157     $(document).on('click', 'a.delete_results', function(e){
158         e.preventDefault();
159         /**  Hides the results shown by the browse criteria */
160         $("#table-info").hide();
161         $('#sqlqueryform').hide();
162         $('#togglequerybox').hide();
163         /** Conformation message for deletion */
164         var msg = PMA_sprintf(
165             PMA_messages.strConfirmDeleteResults,
166             $(this).data('table-name')
167         );
168         if (confirm(msg)) {
169             var $msg = PMA_ajaxShowMessage(PMA_messages.strDeleting, false);
170             /** Load the deleted option to the page*/
171             $('#sqlqueryform').html('');
172             var params = {
173                 'ajax_request': true,
174                 'is_js_confirmed': true,
175                 'sql_query': $(this).data('delete-sql'),
176                 'token' : PMA_commonParams.get('token')
177             };
178             var url = $(this).attr('href');
180             $.post(url, params, function (data) {
181                 if (typeof data === 'undefined' || !data.success) {
182                     PMA_ajaxShowMessage(data.error, false);
183                     return;
184                 }
186                 $('#sqlqueryform').html(data.sql_query);
187                 /** Refresh the search results after the deletion */
188                 document.getElementById('buttonGo').click();
189                 $('#togglequerybox').html(PMA_messages.strHideQueryBox);
190                 /** Show the results of the deletion option */
191                 $('#browse-results').hide();
192                 $('#sqlqueryform').show();
193                 $('#togglequerybox').show();
194                 $('html, body')
195                     .animate({
196                         scrollTop: $("#browse-results").offset().top
197                     }, 1000);
198                 PMA_ajaxRemoveMessage($msg);
199             });
200         }
201     });
203     /**
204      * Ajax Event handler for retrieving the result of an SQL Query
205      */
206     $(document).on('submit', "#db_search_form.ajax", function (event) {
207         event.preventDefault();
209         var $msgbox = PMA_ajaxShowMessage(PMA_messages.strSearching, false);
210         // jQuery object to reuse
211         var $form = $(this);
213         PMA_prepareForAjaxRequest($form);
215         var url = $form.serialize() + "&submit_search=" + $("#buttonGo").val();
216         $.post($form.attr('action'), url, function (data) {
217             if (typeof data !== 'undefined' && data.success === true) {
218                 // found results
219                 $("#searchresults").html(data.message);
221                 $('#togglesearchresultlink')
222                 // always start with the Show message
223                 .text(PMA_messages.strHideSearchResults);
224                 $('#togglesearchresultsdiv')
225                 // now it's time to show the div containing the link
226                 .show();
227                 $('#searchresults').show();
230                 $('#db_search_form')
231                     // workaround for Chrome problem (bug #3168569)
232                     .slideToggle()
233                     .hide();
234                 $('#togglesearchformlink')
235                     // always start with the Show message
236                     .text(PMA_messages.strShowSearchCriteria);
237                 $('#togglesearchformdiv')
238                     // now it's time to show the div containing the link
239                     .show();
240             } else {
241                 // error message (zero rows)
242                 $("#searchresults").html(data.error).show();
243             }
245             PMA_ajaxRemoveMessage($msgbox);
246         });
247     });
248 }); // end $()