javascript.twig 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. $( function() {
  2. {# Add event when user click on "Go" button #}
  3. $("#buttonGo").bind("click", function() {
  4. {# Hide form #}
  5. $("#upload_form_form").css("display", "none");
  6. {% if handler != 'PhpMyAdmin\\Plugins\\Import\\Upload\\UploadNoplugin' %}
  7. {# Some variable for javascript #}
  8. {% set ajax_url = 'import_status.php?id=' ~ upload_id ~ Url_getCommonRaw({
  9. 'import_status': 1
  10. }, '&') %}
  11. {% set promot_str = Sanitize_jsFormat(
  12. 'The file being uploaded is probably larger than the maximum allowed size or this is a known bug in webkit based (Safari, Google Chrome, Arora etc.) browsers.'|trans,
  13. false
  14. ) %}
  15. {% set statustext_str = Sanitize_escapeJsString('%s of %s'|trans) %}
  16. {% set second_str = Sanitize_jsFormat('%s/sec.'|trans, false) %}
  17. {% set remaining_min = Sanitize_jsFormat('About %MIN min. %SEC sec. remaining.'|trans, false) %}
  18. {% set remaining_second = Sanitize_jsFormat('About %SEC sec. remaining.'|trans, false) %}
  19. {% set processed_str = Sanitize_jsFormat(
  20. 'The file is being processed, please be patient.'|trans,
  21. false
  22. ) %}
  23. {% set import_url = Url_getCommonRaw({'import_status': 1}, '&') %}
  24. {% set upload_html %}
  25. {% apply spaceless %}
  26. <div class="upload_progress">
  27. <div class="upload_progress_bar_outer">
  28. <div class="percentage"></div>
  29. <div id="status" class="upload_progress_bar_inner">
  30. <div class="percentage"></div>
  31. </div>
  32. </div>
  33. <div>
  34. <img src="{{ pma_theme_image }}ajax_clock_small.gif" width="16" height="16" alt="ajax clock" /> {{ Sanitize_jsFormat('Uploading your import file…'|trans, false) -}}
  35. </div>
  36. <div id="statustext"></div>
  37. </div>
  38. {% endapply %}
  39. {% endset %}
  40. {# Start output #}
  41. var finished = false;
  42. var percent = 0.0;
  43. var total = 0;
  44. var complete = 0;
  45. var original_title = parent && parent.document ? parent.document.title : false;
  46. var import_start;
  47. var perform_upload = function () {
  48. new $.getJSON(
  49. "{{ ajax_url|raw }}",
  50. {},
  51. function(response) {
  52. finished = response.finished;
  53. percent = response.percent;
  54. total = response.total;
  55. complete = response.complete;
  56. if (total==0 && complete==0 && percent==0) {
  57. $("#upload_form_status_info").html('<img src="{{ pma_theme_image }}ajax_clock_small.gif" width="16" height="16" alt="ajax clock" /> {{ promot_str|raw }}');
  58. $("#upload_form_status").css("display", "none");
  59. } else {
  60. var now = new Date();
  61. now = Date.UTC(
  62. now.getFullYear(),
  63. now.getMonth(),
  64. now.getDate(),
  65. now.getHours(),
  66. now.getMinutes(),
  67. now.getSeconds())
  68. + now.getMilliseconds() - 1000;
  69. var statustext = PMA_sprintf(
  70. "{{ statustext_str|raw }}",
  71. formatBytes(
  72. complete, 1, PMA_messages.strDecimalSeparator
  73. ),
  74. formatBytes(
  75. total, 1, PMA_messages.strDecimalSeparator
  76. )
  77. );
  78. if ($("#importmain").is(":visible")) {
  79. {# Show progress UI #}
  80. $("#importmain").hide();
  81. $("#import_form_status")
  82. .html('{{ upload_html|raw }}')
  83. .show();
  84. import_start = now;
  85. }
  86. else if (percent > 9 || complete > 2000000) {
  87. {# Calculate estimated time #}
  88. var used_time = now - import_start;
  89. var seconds = parseInt(((total - complete) / complete) * used_time / 1000);
  90. var speed = PMA_sprintf(
  91. "{{ second_str|raw }}",
  92. formatBytes(complete / used_time * 1000, 1, PMA_messages.strDecimalSeparator)
  93. );
  94. var minutes = parseInt(seconds / 60);
  95. seconds %= 60;
  96. var estimated_time;
  97. if (minutes > 0) {
  98. estimated_time = "{{ remaining_min|raw }}"
  99. .replace("%MIN", minutes)
  100. .replace("%SEC", seconds);
  101. }
  102. else {
  103. estimated_time = "{{ remaining_second|raw }}"
  104. .replace("%SEC", seconds);
  105. }
  106. statustext += "<br />" + speed + "<br /><br />" + estimated_time;
  107. }
  108. var percent_str = Math.round(percent) + "%";
  109. $("#status").animate({width: percent_str}, 150);
  110. $(".percentage").text(percent_str);
  111. {# Show percent in window title #}
  112. if (original_title !== false) {
  113. parent.document.title
  114. = percent_str + " - " + original_title;
  115. }
  116. else {
  117. document.title
  118. = percent_str + " - " + original_title;
  119. }
  120. $("#statustext").html(statustext);
  121. }
  122. if (finished == true) {
  123. if (original_title !== false) {
  124. parent.document.title = original_title;
  125. }
  126. else {
  127. document.title = original_title;
  128. }
  129. $("#importmain").hide();
  130. {# Loads the message, either success or mysql error #}
  131. $("#import_form_status")
  132. .html('<img src="{{ pma_theme_image }}ajax_clock_small.gif" width="16" height="16" alt="ajax clock" /> {{ processed_str|raw }}')
  133. .show();
  134. $("#import_form_status").load("import_status.php?message=true&{{ import_url|raw }}");
  135. PMA_reloadNavigation();
  136. {# If finished #}
  137. }
  138. else {
  139. setTimeout(perform_upload, 1000);
  140. }
  141. });
  142. };
  143. setTimeout(perform_upload, 1000);
  144. {% else %}
  145. {# No plugin available #}
  146. {% set image_tag -%}
  147. <img src="{{ pma_theme_image -}}
  148. ajax_clock_small.gif" width="16" height="16" alt="ajax clock" />
  149. {{- Sanitize_jsFormat(
  150. 'Please be patient, the file is being uploaded. Details about the upload are not available.'|trans,
  151. false
  152. ) -}}
  153. {{- Util_showDocu('faq', 'faq2-9') -}}
  154. {%- endset %}
  155. $('#upload_form_status_info').html('{{ image_tag|raw }}');
  156. $("#upload_form_status").css("display", "none");
  157. {% endif %}
  158. });
  159. });