').appendTo(rowProg)
rowItem.attr('data-filename', escape(filename))
rowName.text(filename)
rowSize.text(size)
rowItem.append(rowName, rowProg, rowSize, rowUrl)
return rowItem
}
uploadBtn.on('change', function (e) {
uploadFiles.empty().removeClass('error completed')
var files = uploadInput[0].filelist;
files.forEach(function (file) {
createRow(file.name, file.humanSize).appendTo(uploadFiles)
})
var totalRow = createRow('', files.humanSize, 'total')
totalRow.appendTo(uploadFiles)
if (files.size > MAX_SIZE) {
uploadFiles.addClass('error')
$('.file-name', totalRow).text('onii-chan y-your upload is t-too big…')
return
}
var up = files.upload("upload.php")
var eachRow = function (files, fn) {
var hits = {}
files.forEach(function (file) {
++hits[file.name] || (hits[file.name] = 0)
var row = $($('li[data-filename="' + escape(file.name) + '"]')[hits[file.name] || 0])
fn.call(row, row, file, files)
})
}
var totalName = $('.file-name', totalRow)
up.on('uploadprogress', function (e, files) {
eachRow(files, function (row, file, files) {
$('.progress-inner', row).width((file.percentUploaded * 100) + '%')
})
$('.progress-inner', totalRow).width((files.percentUploaded * 100) + '%')
})
up.on('uploadcomplete', function (e) {
$('.progress-inner').width('100%')
totalName.text('Grabbing URLs...')
})
up.on('load', function (e, res) {
switch (e.target.status) {
case 200:
var res = JSON.parse(res)
if (!res.success) {
uploadFiles.addClass('error')
$('.file-name', totalRow).text('Something went wrong; try again later.')
break
}
eachRow(res.files, function (row, file, files) {
var url = 'https://i.pantsu.cat/' + file.url
var link = $('
')
link.attr('href', url)
.attr('target', '_BLANK')
.text(file.url.replace("http://","").replace("https://",""))
$('.file-url', row).append(link)
})
uploadFiles.addClass('completed')
totalName.text('Done!')
break
case 413:
uploadFiles.addClass('error completed')
// Terrible work-around, but necessary since otherwise the '…' entity is left decoded
totalName.html($('').html('onii-chan, y-your upload is t-too big…').text());
break
default:
uploadFiles.addClass('error completed')
totalName.text('Something went wrong; try again later.')
}
})
up.upload()
})
})