📄 ext.ux.uploaddialog.js
字号:
var queued = this.getQueuedCount(true);
var value = 1 - queued / this.initial_queued_count;
this.progress_bar.updateProgress(
value,
String.format(
this.i18n.progress_uploading_text,
this.initial_queued_count - queued,
this.initial_queued_count
)
);
}
else {
this.progress_bar.updateProgress(0, this.i18n.progress_waiting_text);
}
},
updateToolbar : function()
{
var tb = this.grid_panel.getBottomToolbar();
if (this.is_uploading) {
tb.x_buttons.remove.disable();
tb.x_buttons.reset.disable();
tb.x_buttons.upload.enable();
if (!this.getAllowCloseOnUpload()) {
tb.x_buttons.close.disable();
}
Ext.fly(tb.x_buttons.indicator.getEl()).replaceClass(
'ext-ux-uploaddialog-indicator-stoped',
'ext-ux-uploaddialog-indicator-processing'
);
tb.x_buttons.upload.setIconClass('ext-ux-uploaddialog-uploadstopbtn');
tb.x_buttons.upload.setText(this.i18n.upload_btn_stop_text);
tb.x_buttons.upload.getEl()
.child(tb.x_buttons.upload.buttonSelector)
.dom[tb.x_buttons.upload.tooltipType] = this.i18n.upload_btn_stop_tip;
}
else {
tb.x_buttons.remove.enable();
tb.x_buttons.reset.enable();
tb.x_buttons.close.enable();
Ext.fly(tb.x_buttons.indicator.getEl()).replaceClass(
'ext-ux-uploaddialog-indicator-processing',
'ext-ux-uploaddialog-indicator-stoped'
);
tb.x_buttons.upload.setIconClass('ext-ux-uploaddialog-uploadstartbtn');
tb.x_buttons.upload.setText(this.i18n.upload_btn_start_text);
tb.x_buttons.upload.getEl()
.child(tb.x_buttons.upload.buttonSelector)
.dom[tb.x_buttons.upload.tooltipType] = this.i18n.upload_btn_start_tip;
if (this.getQueuedCount() > 0) {
tb.x_buttons.upload.enable();
}
else {
tb.x_buttons.upload.disable();
}
if (this.grid_panel.getSelectionModel().hasSelection()) {
tb.x_buttons.remove.enable();
}
else {
tb.x_buttons.remove.disable();
}
if (this.grid_panel.getStore().getCount() > 0) {
tb.x_buttons.reset.enable();
}
else {
tb.x_buttons.reset.disable();
}
}
},
saveInitialQueuedCount : function()
{
this.initial_queued_count = this.getQueuedCount();
},
incInitialQueuedCount : function()
{
this.initial_queued_count++;
},
setUploadingFlag : function()
{
this.is_uploading = true;
},
resetUploadingFlag : function()
{
this.is_uploading = false;
},
prepareNextUploadTask : function()
{
// Searching for first unuploaded file.
var store = this.grid_panel.getStore();
var record = null;
store.each(function(r) {
if (!record && r.get('state') == Ext.ux.UploadDialog.FileRecord.STATE_QUEUE) {
record = r;
}
else {
r.get('input_element').dom.disabled = true;
}
});
record.get('input_element').dom.disabled = false;
record.set('state', Ext.ux.UploadDialog.FileRecord.STATE_PROCESSING);
record.set('note', this.i18n.note_processing);
record.commit();
this.fsa.postEvent('file-upload-start', record);
},
fireUploadStartEvent : function()
{
this.fireEvent('uploadstart', this);
},
removeFiles : function(file_records)
{
var store = this.grid_panel.getStore();
for (var i = 0, len = file_records.length; i < len; i++) {
var r = file_records[i];
r.get('input_element').remove();
store.remove(r);
}
},
fireFileRemoveEvent : function(file_records)
{
for (var i = 0, len = file_records.length; i < len; i++) {
this.fireEvent('fileremove', this, file_records[i].get('filename'));
}
},
resetQueue : function()
{
var store = this.grid_panel.getStore();
store.each(
function(r) {
r.get('input_element').remove();
}
);
store.removeAll();
},
fireResetQueueEvent : function()
{
this.fireEvent('resetqueue', this);
},
uploadFile : function(record)
{
Ext.Ajax.request({
url : this.url,
params : this.base_params || this.baseParams || this.params,
method : 'POST',
form : this.form,
isUpload : true,
success : this.onAjaxSuccess,
failure : this.onAjaxFailure,
scope : this,
record: record
});
},
fireFileUploadStartEvent : function(record)
{
this.fireEvent('fileuploadstart', this, record.get('filename'));
},
updateRecordState : function(data)
{
if ('success' in data.response && data.response.success) {
data.record.set('state', Ext.ux.UploadDialog.FileRecord.STATE_FINISHED);
data.record.set(
'note', data.response.message || data.response.error || this.i18n.note_upload_success
);
}
else {
data.record.set('state', Ext.ux.UploadDialog.FileRecord.STATE_FAILED);
data.record.set(
'note', data.response.message || data.response.error || this.i18n.note_upload_error
);
}
data.record.commit();
},
fireUploadSuccessEvent : function(data)
{
this.fireEvent('uploadsuccess', this, data.record.get('filename'), data.response);
},
fireUploadErrorEvent : function(data)
{
this.fireEvent('uploaderror', this, data.record.get('filename'), data.response);
},
fireUploadFailedEvent : function(data)
{
this.fireEvent('uploadfailed', this, data.record.get('filename'));
},
fireUploadCompleteEvent : function()
{
this.fireEvent('uploadcomplete', this);
},
findUploadFrame : function()
{
this.upload_frame = Ext.getBody().child('iframe.x-hidden:last');
},
resetUploadFrame : function()
{
this.upload_frame = null;
},
removeUploadFrame : function()
{
if (this.upload_frame) {
this.upload_frame.removeAllListeners();
this.upload_frame.dom.src = 'about:blank';
this.upload_frame.remove();
}
this.upload_frame = null;
},
abortUpload : function()
{
this.removeUploadFrame();
var store = this.grid_panel.getStore();
var record = null;
store.each(function(r) {
if (r.get('state') == Ext.ux.UploadDialog.FileRecord.STATE_PROCESSING) {
record = r;
return false;
}
});
record.set('state', Ext.ux.UploadDialog.FileRecord.STATE_FAILED);
record.set('note', this.i18n.note_aborted);
record.commit();
},
fireUploadStopEvent : function()
{
this.fireEvent('uploadstop', this);
},
repostHide : function()
{
this.fsa.postEvent('hide');
},
flushEventQueue : function()
{
this.fsa.flushEventQueue();
},
/**
* @access private
*/
// -------------------------------------------------------------------------------------------- //
onWindowRender : function()
{
this.fsa.postEvent('window-render');
},
onWindowBeforeHide : function()
{
return this.isUploading() ? this.getAllowCloseOnUpload() : true;
},
onWindowHide : function()
{
this.fsa.postEvent('hide');
},
onWindowDestroy : function()
{
this.fsa.postEvent('destroy');
},
onGridRender : function()
{
this.fsa.postEvent('grid-render');
},
onGridSelectionChange : function()
{
this.fsa.postEvent('grid-selection-change');
},
onAddButtonFileSelected : function(btn)
{
this.fsa.postEvent('file-selected', btn);
},
onUploadButtonClick : function()
{
if (this.is_uploading) {
this.fsa.postEvent('stop-upload');
}
else {
this.fsa.postEvent('start-upload');
}
},
onRemoveButtonClick : function()
{
var selections = this.grid_panel.getSelectionModel().getSelections();
this.fsa.postEvent('remove-files', selections);
},
onResetButtonClick : function()
{
this.fsa.postEvent('reset-queue');
},
onCloseButtonClick : function()
{
this[this.closeAction].call(this);
},
onAjaxSuccess : function(response, options)
{
var json_response = {
'success' : false,
'error' : this.i18n.note_upload_error
}
try {
var rt = response.responseText;
var filter = rt.match(/^<pre>((?:.|\n)*)<\/pre>$/i);
if (filter) {
rt = filter[1];
}
json_response = Ext.util.JSON.decode(rt);
}
catch (e) {}
var data = {
record: options.record,
response: json_response
}
if ('success' in json_response && json_response.success) {
this.fsa.postEvent('file-upload-success', data);
}
else {
this.fsa.postEvent('file-upload-error', data);
}
},
onAjaxFailure : function(response, options)
{
var data = {
record : options.record,
response : {
'success' : false,
'error' : this.i18n.note_upload_failed
}
}
this.fsa.postEvent('file-upload-failed', data);
},
/**
* @access public
*/
// -------------------------------------------------------------------------------------------- //
startUpload : function()
{
this.fsa.postEvent('start-upload');
},
stopUpload : function()
{
this.fsa.postEvent('stop-upload');
},
getUrl : function()
{
return this.url;
},
setUrl : function(url)
{
this.url = url;
},
getBaseParams : function()
{
return this.base_params;
},
setBaseParams : function(params)
{
this.base_params = params;
},
getUploadAutostart : function()
{
return this.upload_autostart;
},
setUploadAutostart : function(value)
{
this.upload_autostart = value;
},
getAllowCloseOnUpload : function()
{
return this.allow_close_on_upload;
},
setAllowCloseOnUpload : function(value)
{
this.allow_close_on_upload;
},
getResetOnHide : function()
{
return this.reset_on_hide;
},
setResetOnHide : function(value)
{
this.reset_on_hide = value;
},
getPermittedExtensions : function()
{
return this.permitted_extensions;
},
setPermittedExtensions : function(value)
{
this.permitted_extensions = value;
},
isUploading : function()
{
return this.is_uploading;
},
isNotEmptyQueue : function()
{
return this.grid_panel.getStore().getCount() > 0;
},
getQueuedCount : function(count_processing)
{
var count = 0;
var store = this.grid_panel.getStore();
store.each(function(r) {
if (r.get('state') == Ext.ux.UploadDialog.FileRecord.STATE_QUEUE) {
count++;
}
if (count_processing && r.get('state') == Ext.ux.UploadDialog.FileRecord.STATE_PROCESSING) {
count++;
}
});
return count;
},
hasUnuploadedFiles : function()
{
return this.getQueuedCount() > 0;
}
});
// ---------------------------------------------------------------------------------------------- //
var p = Ext.ux.UploadDialog.Dialog.prototype;
p.i18n = {
title: 'File upload dialog',
state_col_title: 'State',
state_col_width: 70,
filename_col_title: 'Filename',
filename_col_width: 230,
note_col_title: 'Note',
note_col_width: 150,
add_btn_text: 'Add',
add_btn_tip: 'Add file into upload queue.',
remove_btn_text: 'Remove',
remove_btn_tip: 'Remove file from upload queue.',
reset_btn_text: 'Reset',
reset_btn_tip: 'Reset queue.',
upload_btn_start_text: 'Upload',
upload_btn_stop_text: 'Abort',
upload_btn_start_tip: 'Upload queued files to the server.',
upload_btn_stop_tip: 'Stop upload.',
close_btn_text: 'Close',
close_btn_tip: 'Close the dialog.',
progress_waiting_text: 'Waiting...',
progress_uploading_text: 'Uploading: {0} of {1} files complete.',
error_msgbox_title: 'Error',
permitted_extensions_join_str: ',',
err_file_type_not_permitted: 'Selected file extension isn\'t permitted.<br/>Please select files with following extensions: {1}',
note_queued_to_upload: 'Queued for upload.',
note_processing: 'Uploading...',
note_upload_failed: 'Server is unavailable or internal server error occured.',
note_upload_success: 'OK.',
note_upload_error: 'Upload error.',
note_aborted: 'Aborted by user.'
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -