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