Browse Source

Pull request #1420: KERNEL-4881 refactor: bi.multifile_editor 简化,自动重置状态, accept 属性与标准统一

Merge in VISUAL/fineui from ~DAILER/fineui:master to master

* commit '93b2cb911696d7b25f39fff3df3931842160d54c':
  KERNEL-4881 refactor: bi.multifile_editor 简化,自动重置状态, accept 属性与标准统一
es6
parent
commit
372d3de2fb
  1. 1
      changelog.md
  2. 9
      src/base/single/editor/editor.multifile.js
  3. 43
      src/base/single/input/file.js

1
changelog.md

@ -1,5 +1,6 @@
# 更新日志 # 更新日志
2.0(2020-07) 2.0(2020-07)
- bi.file文件上传控件accept属性与 [input accept Attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept) 统一
- 修复了日期类型控件设置一个不在minDate和maxDate之间的日期值时,面板灰化与翻页按钮状态不对的问题 - 修复了日期类型控件设置一个不在minDate和maxDate之间的日期值时,面板灰化与翻页按钮状态不对的问题
- BI.OB的on方法返回一个解除监听的函数 - BI.OB的on方法返回一个解除监听的函数
- 修复了grid_view执行_unMount时不调用子组件的_unMount的问题 - 修复了grid_view执行_unMount时不调用子组件的_unMount的问题

9
src/base/single/editor/editor.multifile.js

@ -66,6 +66,10 @@ BI.MultifileEditor = BI.inherit(BI.Widget, {
}); });
}, },
_reset: function () {
this.file.reset();
},
select: function () { select: function () {
this.file.select(); this.file.select();
}, },
@ -75,11 +79,12 @@ BI.MultifileEditor = BI.inherit(BI.Widget, {
}, },
upload: function () { upload: function () {
this._reset();
this.file.upload(); this.file.upload();
}, },
reset: function () { reset: function () {
this.file.reset(); this._reset();
} }
}); });
BI.MultifileEditor.EVENT_CHANGE = "EVENT_CHANGE"; BI.MultifileEditor.EVENT_CHANGE = "EVENT_CHANGE";
@ -87,4 +92,4 @@ BI.MultifileEditor.EVENT_UPLOADSTART = "EVENT_UPLOADSTART";
BI.MultifileEditor.EVENT_ERROR = "EVENT_ERROR"; BI.MultifileEditor.EVENT_ERROR = "EVENT_ERROR";
BI.MultifileEditor.EVENT_PROGRESS = "EVENT_PROGRESS"; BI.MultifileEditor.EVENT_PROGRESS = "EVENT_PROGRESS";
BI.MultifileEditor.EVENT_UPLOADED = "EVENT_UPLOADED"; BI.MultifileEditor.EVENT_UPLOADED = "EVENT_UPLOADED";
BI.shortcut("bi.multifile_editor", BI.MultifileEditor); BI.shortcut("bi.multifile_editor", BI.MultifileEditor);

43
src/base/single/input/file.js

@ -156,7 +156,7 @@
); );
xhr.open("post", handler.url + "&filename=" + _global.encodeURIComponent(handler.file.fileName), true); xhr.open("post", handler.url + "&filename=" + _global.encodeURIComponent(handler.file.fileName), true);
if (!xhr.upload) { if (!xhr.upload) {
var rpe = {loaded: 0, total: handler.file.fileSize || handler.file.size, simulation: true}; var rpe = { loaded: 0, total: handler.file.fileSize || handler.file.size, simulation: true };
rpe.interval = setInterval(function () { rpe.interval = setInterval(function () {
rpe.loaded += 1024 / 4; rpe.loaded += 1024 / 4;
if (rpe.total <= rpe.loaded) { if (rpe.total <= rpe.loaded) {
@ -282,7 +282,7 @@
} }
} }
if (isFunction(handler.onload)) { if (isFunction(handler.onload)) {
handler.onload(rpe, {responseText: responseText}); handler.onload(rpe, { responseText: responseText });
} }
}, },
target = ["AjaxUpload", (new Date).getTime(), String(Math.random()).substring(2)].join("_"); target = ["AjaxUpload", (new Date).getTime(), String(Math.random()).substring(2)].join("_");
@ -403,6 +403,31 @@
return handler; return handler;
}; };
var r1 = /\.([^.]+)$/; // .png
var r2 = /\/([^/]+)$/; // image/png
/**
* 校验文件类型是否合法,同时兼容旧版形式
* @param fileName
* @param fileType
* @returns {boolean}
*/
var fileTypeValidate = function (fileName, fileType) {
var mimes = fileType.split(",");
if (mimes[0] === fileType) {
mimes = (fileType + "").split(";");
}
return BI.some(mimes, function (index, mime) {
var matches;
if (matches = mime.match(r1)) {
return fileName.toLowerCase().indexOf(matches[1]) > -1;
}
if (matches = mime.match(r2)) {
return matches[1] === "*" ? true : fileName.toLowerCase().indexOf(matches[1]) > -1;
}
});
};
BI.File = BI.inherit(BI.Widget, { BI.File = BI.inherit(BI.Widget, {
_defaultConfig: function () { _defaultConfig: function () {
var conf = BI.File.superclass._defaultConfig.apply(this, arguments); var conf = BI.File.superclass._defaultConfig.apply(this, arguments);
@ -415,7 +440,7 @@
name: "", name: "",
url: "", url: "",
multiple: true, multiple: true,
accept: "", /** '*.jpg; *.zip'**/ accept: "", // .png,.pdf,image/jpg,image/* 等
maxSize: -1 // 1024 * 1024 maxSize: -1 // 1024 * 1024
}); });
}, },
@ -428,6 +453,7 @@
} }
this.element.attr("name", o.name || this.getName()); this.element.attr("name", o.name || this.getName());
this.element.attr("title", o.title || ""); this.element.attr("title", o.title || "");
this.element.attr("accept", o.accept);
}, },
created: function () { created: function () {
@ -490,13 +516,13 @@
self_.hide(); // hide progress bars and enable input file self_.hide(); // hide progress bars and enable input file
if (200 > xhr.status || xhr.status > 399) { if (200 > xhr.status || xhr.status > 399) {
BI.Msg.toast(BI.i18nText("BI-Upload_File_Error"), {level: "error"}); BI.Msg.toast(BI.i18nText("BI-Upload_File_Error"), { level: "error" });
self.fireEvent(BI.File.EVENT_ERROR); self.fireEvent(BI.File.EVENT_ERROR);
return; return;
} }
var error = BI.some(_wrap.attach_array, function (index, attach) { var error = BI.some(_wrap.attach_array, function (index, attach) {
if (attach.errorCode) { if (attach.errorCode) {
BI.Msg.toast(attach.errorMsg, {level: "error"}); BI.Msg.toast(attach.errorMsg, { level: "error" });
self.fireEvent(BI.File.EVENT_ERROR, attach); self.fireEvent(BI.File.EVENT_ERROR, attach);
return true; return true;
} }
@ -522,16 +548,17 @@
var value = item.fileName || (item.fileName = tempFile.split("\\").pop()), var value = item.fileName || (item.fileName = tempFile.split("\\").pop()),
ext = -1 !== value.indexOf(".") ? value.split(".").pop().toLowerCase() : "unknown", ext = -1 !== value.indexOf(".") ? value.split(".").pop().toLowerCase() : "unknown",
size = item.fileSize || item.size; size = item.fileSize || item.size;
if (wrap.fileType && -1 === wrap.fileType.indexOf("*." + ext)) { var validateFileType = fileTypeValidate(value, wrap.fileType);
if (!validateFileType) {
// 文件类型不支持 // 文件类型不支持
BI.Msg.toast(BI.i18nText("BI-Upload_File_Type_Error"), {level: "error"}); BI.Msg.toast(BI.i18nText("BI-Upload_File_Type_Error"), { level: "error" });
self.fireEvent(BI.File.EVENT_ERROR, { self.fireEvent(BI.File.EVENT_ERROR, {
errorType: 0, errorType: 0,
file: item file: item
}); });
} else if (wrap.maxSize !== -1 && size && wrap.maxSize < size) { } else if (wrap.maxSize !== -1 && size && wrap.maxSize < size) {
// 文件大小不支持 // 文件大小不支持
BI.Msg.toast(BI.i18nText("BI-Upload_File_Size_Error"), {level: "error"}); BI.Msg.toast(BI.i18nText("BI-Upload_File_Size_Error"), { level: "error" });
self.fireEvent(BI.File.EVENT_ERROR, { self.fireEvent(BI.File.EVENT_ERROR, {
errorType: 1, errorType: 1,
file: item file: item

Loading…
Cancel
Save