-
Notifications
You must be signed in to change notification settings - Fork 189
/
Copy pathapp.js
146 lines (143 loc) · 5.04 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
(function () {
var r = new Uploader({
target: '/upload',
chunkSize: 1024 * 1024,
testChunks: true,
checkChunkUploadedByResponse: function (chunk, message) {
var objMessage = {}
try {
objMessage = JSON.parse(message)
} catch (e) {}
// fake response
// objMessage.uploaded_chunks = [2, 3, 4, 5, 6, 8, 10, 11, 12, 13, 17, 20, 21]
// check the chunk is uploaded
return (objMessage.uploaded_chunks || []).indexOf(chunk.offset + 1) >= 0
}
});
// simple-uploader.js isn't supported, fall back on a different method
if (!r.support) {
$('.uploader-error').show();
return ;
}
// Show a place for dropping/selecting files
$('.uploader-drop').show();
r.assignDrop($('.uploader-drop')[0]);
r.assignBrowse($('.uploader-browse')[0]);
r.assignBrowse($('.uploader-browse-folder')[0], true);
r.assignBrowse($('.uploader-browse-image')[0], false, false, {accept: 'image/*'});
// Handle file add event
r.on('filesAdded', function (files, fileList) {
// Show progress bar
$('.uploader-progress, .uploader-list').show();
fileList.forEach(function (file) {
var $self = file.$el = $(
'<li class="uploader-file">' +
'Uploading <span class="uploader-file-name"></span> ' +
'<span class="uploader-file-size"></span> ' +
'<span class="uploader-file-progress"></span> ' +
'<span class="uploader-file-pause">' +
' <img src="pause.png" title="Pause upload">' +
'</span>' +
'<span class="uploader-file-resume">' +
' <img src="resume.png" title="Resume upload">' +
'</span>' +
'<span class="uploader-file-cancel">' +
' <img src="cancel.png" title="Cancel upload">' +
'</span>' +
'</li>'
);
$self.find('.uploader-file-name').text(file.name);
$self.find('.uploader-file-size').text(file.getFormatSize());
$self.find('.uploader-file-pause').on('click', function () {
file.pause();
$self.find('.uploader-file-pause').hide();
$self.find('.uploader-file-resume').show();
});
$self.find('.uploader-file-resume').on('click', function () {
file.resume();
$self.find('.uploader-file-pause').show();
$self.find('.uploader-file-resume').hide();
});
$self.find('.uploader-file-cancel').on('click', function () {
file.cancel();
$self.remove();
});
$('.uploader-list').append($self);
});
});
r.on('filesSubmitted', function (files, fileList) {
window.r.upload();
});
r.on('complete', function () {
// Hide pause/resume when the upload has completed
$('.uploader-progress .progress-resume-link, .uploader-progress .progress-pause-link').hide();
});
r.on('fileComplete', function (rooFile) {
var $self = rooFile.$el
// Reflect that the file upload has completed
$self.find('.uploader-file-progress').text('(completed)');
$self.find('.uploader-file-pause, .uploader-file-resume').remove();
});
r.on('fileError', function (rootFile, file, message) {
rootFile.$el.find('.uploader-file-progress').html('(file could not be uploaded: ' + message + ')')
});
r.on('fileProgress', function (rootFile, file) {
// Handle progress for both the file and the overall upload
rootFile.$el.find('.uploader-file-progress')
.html(Math.floor(rootFile.progress() * 100) + '% '
+ Uploader.utils.formatSize(rootFile.averageSpeed) + '/s '
+ secondsToStr(rootFile.timeRemaining()) + ' remaining') ;
$('.progress-bar').css({width:Math.floor(r.progress()*100) + '%'});
});
r.on('uploadStart', function () {
// Show pause, hide resume
$('.uploader-progress .progress-resume-link').hide();
$('.uploader-progress .progress-pause-link').show();
});
r.on('catchAll', function () {
console.log.apply(console, arguments);
});
window.r = {
pause: function () {
r.pause();
// Show resume, hide pause
$('.uploader-file-resume').show();
$('.uploader-file-pause').hide();
$('.uploader-progress .progress-resume-link').show();
$('.uploader-progress .progress-pause-link').hide();
},
cancel: function () {
r.cancel();
$('.uploader-file').remove();
},
upload: function () {
$('.uploader-file-pause').show();
$('.uploader-file-resume').hide();
r.resume();
},
uploader: r
};
})();
function secondsToStr (temp) {
function numberEnding (number) {
return (number > 1) ? 's' : '';
}
var years = Math.floor(temp / 31536000);
if (years) {
return years + ' year' + numberEnding(years);
}
var days = Math.floor((temp %= 31536000) / 86400);
if (days) {
return days + ' day' + numberEnding(days);
}
var hours = Math.floor((temp %= 86400) / 3600);
if (hours) {
return hours + ' hour' + numberEnding(hours);
}
var minutes = Math.floor((temp %= 3600) / 60);
if (minutes) {
return minutes + ' minute' + numberEnding(minutes);
}
var seconds = temp % 60;
return seconds + ' second' + numberEnding(seconds);
}