db_central_columns.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. /* vim: set expandtab sw=4 ts=4 sts=4: */
  2. /**
  3. * @fileoverview events handling from central columns page
  4. * @name Central columns
  5. *
  6. * @requires jQuery
  7. */
  8. /**
  9. * AJAX scripts for db_central_columns.php
  10. *
  11. * Actions ajaxified here:
  12. * Inline Edit and save of a result row
  13. * Delete a row
  14. * Multiple edit and delete option
  15. *
  16. */
  17. AJAX.registerTeardown('db_central_columns.js', function () {
  18. $(".edit").unbind('click');
  19. $(".edit_save_form").unbind('click');
  20. $('.edit_cancel_form').unbind('click');
  21. $(".del_row").unbind('click');
  22. $(document).off("keyup", ".filter_rows");
  23. $('.edit_cancel_form').unbind('click');
  24. $('#table-select').unbind('change');
  25. $('#column-select').unbind('change');
  26. $("#add_col_div").find(">a").unbind('click');
  27. $('#add_new').unbind('submit');
  28. $('#multi_edit_central_columns').unbind('submit');
  29. $("select.default_type").unbind('change');
  30. $("button[name='delete_central_columns']").unbind('click');
  31. $("button[name='edit_central_columns']").unbind('click');
  32. });
  33. AJAX.registerOnload('db_central_columns.js', function () {
  34. $('#tableslistcontainer input,#tableslistcontainer select,#tableslistcontainer .default_value,#tableslistcontainer .open_enum_editor').hide();
  35. $('#tableslistcontainer').find('.checkall').show();
  36. $('#tableslistcontainer').find('.checkall_box').show();
  37. if ($('#table_columns').find('tbody tr').length > 0) {
  38. $("#table_columns").tablesorter({
  39. headers: {
  40. 0: {sorter: false},
  41. 1: {sorter: false}, // hidden column
  42. 4: {sorter: "integer"}
  43. }
  44. });
  45. }
  46. $('#tableslistcontainer').find('button[name="delete_central_columns"]').click(function(event){
  47. event.preventDefault();
  48. var multi_delete_columns = $('.checkall:checkbox:checked').serialize();
  49. if(multi_delete_columns === ''){
  50. PMA_ajaxShowMessage(PMA_messages.strRadioUnchecked);
  51. return false;
  52. }
  53. PMA_ajaxShowMessage();
  54. $("#del_col_name").val(multi_delete_columns);
  55. $("#del_form").submit();
  56. });
  57. $('#tableslistcontainer').find('button[name="edit_central_columns"]').click(function(event){
  58. event.preventDefault();
  59. var editColumnList = $('.checkall:checkbox:checked').serialize();
  60. if(editColumnList === ''){
  61. PMA_ajaxShowMessage(PMA_messages.strRadioUnchecked);
  62. return false;
  63. }
  64. var editColumnData = editColumnList+ '&edit_central_columns_page=true&ajax_request=true&ajax_page_request=true&token='+PMA_commonParams.get('token')+'&db='+PMA_commonParams.get('db');
  65. PMA_ajaxShowMessage();
  66. AJAX.source = $(this);
  67. $.get('db_central_columns.php', editColumnData, AJAX.responseHandler);
  68. });
  69. $('#multi_edit_central_columns').submit(function(event){
  70. event.preventDefault();
  71. event.stopPropagation();
  72. var multi_column_edit_data = $("#multi_edit_central_columns").serialize()+'&multi_edit_central_column_save=true&ajax_request=true&ajax_page_request=true&token='+PMA_commonParams.get('token')+'&db='+PMA_commonParams.get('db');
  73. PMA_ajaxShowMessage();
  74. AJAX.source = $(this);
  75. $.post('db_central_columns.php', multi_column_edit_data, AJAX.responseHandler);
  76. });
  77. $('#add_new').find('td').each(function(){
  78. if ($(this).attr('name') !== 'undefined') {
  79. $(this).find('input,select:first').attr('name', $(this).attr('name'));
  80. }
  81. });
  82. $("#field_0_0").attr('required','required');
  83. $('#add_new input[type="text"], #add_new input[type="number"], #add_new select')
  84. .css({
  85. 'width' : '10em',
  86. '-moz-box-sizing' : 'border-box'
  87. });
  88. window.scrollTo(0, 0);
  89. $(document).on("keyup", ".filter_rows", function () {
  90. // get the column names
  91. var cols = $('th.column_heading').map(function () {
  92. return $.trim($(this).text());
  93. }).get();
  94. $.uiTableFilter($("#table_columns"), $(this).val(), cols, null, "td span");
  95. });
  96. $('.edit').click(function() {
  97. var rownum = $(this).parent().data('rownum');
  98. $('#save_' + rownum).show();
  99. $(this).hide();
  100. $('#f_' + rownum + ' td span').hide();
  101. $('#f_' + rownum + ' input, #f_' + rownum + ' select, #f_' + rownum + ' .open_enum_editor').show();
  102. var attribute_val = $('#f_' + rownum + ' td[name=col_attribute] span').html();
  103. $('#f_' + rownum + ' select[name=field_attribute\\['+ rownum +'\\] ] option[value="' + attribute_val + '"]').attr("selected","selected");
  104. if($('#f_' + rownum + ' .default_type').val() === 'USER_DEFINED') {
  105. $('#f_' + rownum + ' .default_type').siblings('.default_value').show();
  106. } else {
  107. $('#f_' + rownum + ' .default_type').siblings('.default_value').hide();
  108. }
  109. });
  110. $(".del_row").click(function (event) {
  111. event.preventDefault();
  112. event.stopPropagation();
  113. var $td = $(this);
  114. var question = PMA_messages.strDeleteCentralColumnWarning;
  115. $td.PMA_confirm(question, null, function (url) {
  116. var rownum = $td.data('rownum');
  117. $("#del_col_name").val("selected_fld%5B%5D="+$('#checkbox_row_' + rownum ).val());
  118. $("#del_form").submit();
  119. });
  120. });
  121. $('.edit_cancel_form').click(function(event) {
  122. event.preventDefault();
  123. event.stopPropagation();
  124. var rownum = $(this).data('rownum');
  125. $('#save_' + rownum).hide();
  126. $('#edit_' + rownum).show();
  127. $('#f_' + rownum + ' td span').show();
  128. $('#f_' + rownum + ' input, #f_' + rownum + ' select,#f_'+rownum+' .default_value, #f_' + rownum + ' .open_enum_editor').hide();
  129. $('#tableslistcontainer').find('.checkall').show();
  130. });
  131. $('.edit_save_form').click(function(event) {
  132. //alert(1);
  133. event.preventDefault();
  134. event.stopPropagation();
  135. var rownum = $(this).data('rownum');
  136. $('#f_' + rownum + ' td').each(function() {
  137. if ($(this).attr('name') !== 'undefined') {
  138. $(this).find(':input[type!="hidden"],select:first')
  139. .attr('name', $(this).attr('name'));
  140. }
  141. });
  142. if($('#f_' + rownum + ' .default_type').val() === 'USER_DEFINED') {
  143. $('#f_' + rownum + ' .default_type').attr('name','col_default_sel');
  144. } else {
  145. $('#f_' + rownum + ' .default_value').attr('name','col_default_val');
  146. }
  147. // alert(rownum);
  148. var datastring = $('#f_' + rownum + ' :input').serialize();
  149. //console.log(datastring);
  150. $.ajax({
  151. type: "POST",
  152. url: "db_central_columns.php",
  153. data: datastring+'&ajax_request=true',
  154. dataType: "json",
  155. success: function(data) {
  156. if (data.message !== '1') {
  157. PMA_ajaxShowMessage(
  158. '<div class="error">' +
  159. data.message +
  160. '</div>',
  161. false
  162. );
  163. } else {
  164. $('#f_' + rownum + ' td[name=col_name] span').text($('#f_' + rownum + ' input[name=col_name]').val()).html();
  165. $('#f_' + rownum + ' td[name=col_type] span').text($('#f_' + rownum + ' select[name=col_type]').val()).html();
  166. $('#f_' + rownum + ' td[name=col_length] span').text($('#f_' + rownum + ' input[name=col_length]').val()).html();
  167. $('#f_' + rownum + ' td[name=collation] span').text($('#f_' + rownum + ' select[name=collation]').val()).html();
  168. $('#f_' + rownum + ' td[name=col_attribute] span').text($('#f_' + rownum + ' select[name=col_attribute]').val()).html();
  169. $('#f_' + rownum + ' td[name=col_isNull] span').text($('#f_' + rownum +' input[name=col_isNull]').is(":checked")?"Yes":"No").html();
  170. $('#f_' + rownum + ' td[name=col_extra] span').text($('#f_' + rownum + ' input[name=col_extra]').is(":checked") ? "auto_increment" : "").html();
  171. $('#f_' + rownum + ' td[name=col_default] span').text($('#f_' + rownum + ' :input[name=col_default]').val()).html();
  172. }
  173. $('#save_' + rownum).hide();
  174. $('#edit_' + rownum).show();
  175. $('#f_' + rownum + ' td span').show();
  176. $('#f_' + rownum + ' input, #f_' + rownum + ' select,#f_' + rownum + ' .default_value, #f_' + rownum + ' .open_enum_editor').hide();
  177. $('#tableslistcontainer').find('.checkall').show();
  178. },
  179. error: function() {
  180. PMA_ajaxShowMessage(
  181. '<div class="error">' +
  182. PMA_messages.strErrorProcessingRequest +
  183. '</div>',
  184. false
  185. );
  186. }
  187. });
  188. });
  189. $('#table-select').change(function(e) {
  190. var selectvalue = $(this).val();
  191. var default_column_select = $('#column-select').find('option:first');
  192. var href = "db_central_columns.php";
  193. var params = {
  194. 'ajax_request' : true,
  195. 'token' : PMA_commonParams.get('token'),
  196. 'server' : PMA_commonParams.get('server'),
  197. 'db' : PMA_commonParams.get('db'),
  198. 'selectedTable' : selectvalue,
  199. 'populateColumns' : true
  200. };
  201. $('#column-select').html('<option value="">' + PMA_messages.strLoading + '</option>');
  202. if (selectvalue !== "") {
  203. $.post(href, params, function (data) {
  204. $('#column-select').empty().append(default_column_select);
  205. $('#column-select').append(data.message);
  206. });
  207. }
  208. });
  209. $('#column-select').change(function(e) {
  210. var selectvalue = $(this).val();
  211. if (selectvalue !== "") {
  212. $("#add_column").submit();
  213. }
  214. });
  215. $("#add_col_div").find(">a").click(function(event){
  216. $('#add_new').slideToggle("slow");
  217. var $addColDivLinkSpan = $("#add_col_div").find(">a span");
  218. if($addColDivLinkSpan.html() === '+') {
  219. $addColDivLinkSpan.html('-');
  220. } else {
  221. $addColDivLinkSpan.html('+');
  222. }
  223. });
  224. $('#add_new').submit(function(event){
  225. $('#add_new').toggle();
  226. });
  227. $("#tableslistcontainer").find("select.default_type").change(function () {
  228. if ($(this).val() === 'USER_DEFINED') {
  229. $(this).siblings('.default_value').attr('name','col_default');
  230. $(this).attr('name','col_default_sel');
  231. } else {
  232. $(this).attr('name','col_default');
  233. $(this).siblings('.default_value').attr('name','col_default_val');
  234. }
  235. });
  236. });