Summary: - Removed trailing newlines. - Added newline at EOF. - Removed leading newlines. - Trimmed trailing whitespace. - Spelling fix. - Added newline at EOF Test Plan: N/A Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley CC: hach-que, chad, Korvin, epriestley, aran Differential Revision: https://secure.phabricator.com/D8344
114 lines
2.5 KiB
JavaScript
114 lines
2.5 KiB
JavaScript
/**
|
|
* @requires javelin-install
|
|
* javelin-dom
|
|
* phabricator-notification
|
|
* @provides phabricator-file-upload
|
|
* @javelin
|
|
*/
|
|
|
|
JX.install('PhabricatorFileUpload', {
|
|
|
|
construct : function() {
|
|
this._notification = new JX.Notification();
|
|
},
|
|
|
|
properties : {
|
|
name : null,
|
|
totalBytes : null,
|
|
uploadedBytes : null,
|
|
ID : null,
|
|
PHID : null,
|
|
URI : null,
|
|
status : null,
|
|
markup : null,
|
|
error : null
|
|
},
|
|
|
|
members : {
|
|
_notification : null,
|
|
|
|
update : function() {
|
|
if (!this._notification) {
|
|
return;
|
|
}
|
|
|
|
this._notification
|
|
.setDuration(0)
|
|
.show();
|
|
|
|
var content;
|
|
switch (this.getStatus()) {
|
|
case 'done':
|
|
var link = JX.$N('a', {href: this.getURI()}, 'F' + this.getID());
|
|
|
|
content = [
|
|
JX.$N('strong', {}, ['Upload Complete (', link, ')']),
|
|
JX.$N('br'),
|
|
this.getName()
|
|
];
|
|
|
|
this._notification
|
|
.setContent(content)
|
|
.alterClassName('jx-notification-done', true)
|
|
.setDuration(12000);
|
|
this._notification = null;
|
|
break;
|
|
case 'error':
|
|
content = [
|
|
JX.$N('strong', {}, 'Upload Failure'),
|
|
JX.$N('br'),
|
|
this.getName(),
|
|
JX.$N('br'),
|
|
JX.$N('br'),
|
|
this.getError()
|
|
];
|
|
|
|
this._notification
|
|
.setContent(content)
|
|
.alterClassName('jx-notification-error', true);
|
|
this._notification = null;
|
|
break;
|
|
default:
|
|
var info = '';
|
|
if (this.getTotalBytes()) {
|
|
var p = this._renderPercentComplete();
|
|
var f = this._renderFileSize();
|
|
info = ' (' + p + ' of ' + f + ')';
|
|
}
|
|
|
|
info = 'Uploading "' + this.getName() + '"' + info + '...';
|
|
|
|
this._notification
|
|
.setContent(info);
|
|
break;
|
|
}
|
|
|
|
return this;
|
|
},
|
|
_renderPercentComplete : function() {
|
|
if (!this.getTotalBytes()) {
|
|
return null;
|
|
}
|
|
var ratio = this.getUploadedBytes() / this.getTotalBytes();
|
|
return parseInt(100 * ratio, 10) + '%';
|
|
},
|
|
_renderFileSize : function() {
|
|
if (!this.getTotalBytes()) {
|
|
return null;
|
|
}
|
|
|
|
var s = 3;
|
|
var n = this.getTotalBytes();
|
|
while (s && n >= 1000) {
|
|
n = Math.round(n / 100);
|
|
n = n / 10;
|
|
s--;
|
|
}
|
|
|
|
s = ['GB', 'MB', 'KB', 'bytes'][s];
|
|
return n + ' ' + s;
|
|
}
|
|
}
|
|
|
|
});
|