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");
6
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}, '&') %}
19
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 %}
34
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;
42
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;
52
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                        );
75
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                            );
92
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                            }
105
106                            statustext += "<br>" + speed + "<br><br>" + estimated_time;
107                        }
108
109                        var percent_str = Math.round(percent) + "%";
110                        $("#status").animate({width: percent_str}, 150);
111                        $(".percentage").text(percent_str);
112
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                    }
124
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();
139
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    });
160});
161