/**
* name: File Upload
* author: AMing
* version: 1.4.2
* create date: 2020-11-08
* update date: 2021-03-11
*/
var Upload;
(function (Upload) {
var Files = /** @class */ (function () {
function Files(el_btn, options) {
if (options === void 0) { options = null; }
this.el_btn = el_btn;
this.class_name = "upload-img";
this.options = {
upload_url: "",
accept: "",
multiple: false,
upload_in_select: true,
max_size: Files.toMB(2),
success_func: function () { },
file_fail_func: function (files) {
if (!!files && files.length > 0) {
for (var i = 0; i < files.length; i++) {
var item = files[i];
ImageHelper.showError(item.name + "\uFF0C\u56FE\u7247\u8FC7\u5927\u8BF7\u9009\u62E9\u5C0F\u4E8E2M\u7684\u56FE\u7247");
}
}
}
};
this.init(options);
}
Files.prototype.isInit = function () {
return !this.el_btn || this.el_btn.classList.contains(this.class_name);
};
Files.prototype.createFileInput = function () {
this.el_file = document.createElement("input");
this.el_file.type = "file";
this.el_file.accept = this.options.accept;
this.el_file.style.opacity = "0";
this.el_file.style.width = "0";
this.el_file.style.height = "0";
this.el_file.multiple = this.options.multiple;
document.body.appendChild(this.el_file);
this.el_btn.classList.add(this.class_name);
};
Files.prototype.selectFile = function () {
this.el_file.click();
};
Files.prototype.onResult = function (data) {
if (!!this.options.success_func) {
this.options.success_func(data);
}
};
Files.prototype.onFileFail = function (data) {
if (!!this.options.file_fail_func) {
this.options.file_fail_func(data);
}
};
Files.prototype.checkFileSize = function (file) {
if (this.options.max_size <= 0) {
return true;
}
return file.size <= this.options.max_size;
};
Files.prototype.getFileList = function (files) {
var file_list = [], file_fail_list = [];
if (files.length > 0) {
for (var i = 0; i < files.length; i++) {
var item_file = files[i];
if (this.checkFileSize(item_file)) {
file_list.push(item_file);
}
else {
file_fail_list.push(item_file);
}
}
if (file_fail_list.length > 0) {
this.onFileFail(file_fail_list);
}
}
return file_list;
};
Files.prototype.upload = function (files) {
var _this = this;
var file_list = this.getFileList(files);
if (file_list.length <= 0) {
return;
}
var form_data = new FormData();
for (var i = 0; i < file_list.length; i++) {
var item_file = file_list[i];
form_data.append("file" + i, item_file);
}
var xhr = new XMLHttpRequest();
xhr.open("post", this.options.upload_url, true);
xhr.upload.addEventListener("timeout", function (e) {
_this.onResult({
state: 0,
error: "timeout"
});
});
xhr.upload.addEventListener("error", function (e) {
_this.onResult({
state: 0,
error: e
});
});
xhr.upload.addEventListener("abort", function (e) {
_this.onResult({
state: 0,
error: "abort"
});
});
xhr.onload = function (e) {
try {
var text = e.target.responseText;
_this.onResult({
state: 1,
data: text
});
}
catch (e) {
_this.onResult({
state: 0,
error: e
});
}
};
xhr.send(form_data);
this.el_file.value = "";
};
Files.prototype.initOptions = function (data) {
if (!!data) {
for (var key in data) {
if (Object.prototype.hasOwnProperty.call(data, key)) {
this.options[key] = data[key];
}
}
}
};
Files.prototype.initEL = function () {
this.createFileInput();
};
Files.prototype.initEvent = function () {
var _this = this;
this.el_btn.addEventListener("click", function (e) { return _this.selectFile(); });
this.el_file.addEventListener("change", function (e) {
if (!!_this.options.upload_in_select) {
_this.upload(e.currentTarget.files);
}
});
};
Files.prototype.init = function (options) {
if (this.isInit()) {
return;
}
this.initOptions(options);
this.initEL();
this.initEvent();
};
Files.toKB = function (data) {
return data * 1024;
};
Files.toMB = function (data) {
return data * 1024 * 1024;
};
return Files;
}());
Upload.Files = Files;
var ImageHelper = /** @class */ (function () {
function ImageHelper() {
}
ImageHelper.setCallback = function (btn_id, callback) {
var _this = this;
var el_btn = document.getElementById(btn_id);
var upload = new Files(el_btn, {
upload_url: this.upload_url,
success_func: function (e) {
if (e.state == 1) {
callback(e.data);
}
else {
_this.showError(e.error);
}
}
});
};
ImageHelper.set = function (btn_id, txt_id) {
var el_txt = document.getElementById(txt_id);
this.setCallback(btn_id, function (url) {
el_txt.value = url;
$(el_txt).trigger("change");
});
};
ImageHelper.setInput = function (name) {
this.set("btn_" + name, name);
};
ImageHelper.showError = function (e) { };
return ImageHelper;
}());
Upload.ImageHelper = ImageHelper;
var Kindeditor = /** @class */ (function () {
function Kindeditor(settings) {
var _this = this;
this.settings = settings;
this.file_list = [];
this.uploading = false;
console.log(settings);
settings.button_placeholder.value = "\u9009\u62E9\u56FE\u7247";
var upload = new Files(settings.button_placeholder, {
upload_url: settings.upload_url,
multiple: true,
upload_in_select: false,
success_func: function (e) {
if (e.state == 1) {
//callback(e.data);
}
else {
ImageHelper.showError(e.error);
}
}
});
upload.el_file.addEventListener("change", function (e) {
var files = e.currentTarget.files;
var file_list = upload.getFileList(files);
if (file_list.length > 0) {
for (var i = 0; i < file_list.length; i++) {
var item_file = file_list[i];
var file_data = {
id: _this.getFileID(i),
name: item_file.name,
data: item_file,
filestatus: -1,
is_upload: false
};
settings.file_queued_handler(file_data);
_this.addFile(file_data);
}
}
});
}
Kindeditor.prototype.getFileID = function (index) {
return new Date().getTime() + "_" + index;
};
Kindeditor.prototype.startUpload = function () {
//if (this.file_list.length > 0) {
// for (let i = 0; i < this.file_list.length; i++) {
// let item = this.file_list[i];
// this.upload(item);
// }
//}
this.upload_next();
};
Kindeditor.prototype.addFile = function (data) {
var has_item = false;
for (var i = 0; i < this.file_list.length; i++) {
var item = this.file_list[i];
if (item.id == data.id) {
has_item = true;
}
}
if (!has_item) {
this.file_list.push(data);
}
};
Kindeditor.prototype.removeFile = function (id) {
var index = -1;
for (var i = 0; i < this.file_list.length; i++) {
var item = this.file_list[i];
if (item.id == id) {
index = i;
}
}
if (index >= 0) {
this.file_list.splice(index, 1);
}
};
Kindeditor.prototype.upload = function (file) {
var _this = this;
if (this.uploading || file.filestatus == -4) {
return;
}
this.uploading = true;
var form_data = new FormData();
form_data.append("file", file.data);
var xhr = new XMLHttpRequest();
xhr.open("post", this.settings.upload_url, true);
xhr.upload.addEventListener("timeout", function (e) {
file.filestatus = -3;
_this.settings.upload_error_handler(file, -1, "timeout");
_this.upload_complete(file);
});
xhr.upload.addEventListener("error", function (e) {
file.filestatus = -3;
_this.settings.upload_error_handler(file, -1, e);
_this.upload_complete(file);
});
xhr.upload.addEventListener("abort", function (e) {
file.filestatus = -5;
_this.settings.upload_error_handler(file, -1, "abort");
_this.upload_complete(file);
});
xhr.upload.addEventListener("progress", function (e) {
file.filestatus = -2;
_this.settings.upload_progress_handler(file, e.loaded, e.total);
});
xhr.onload = function (e) {
try {
var text = e.target.responseText;
file.filestatus = -4;
_this.settings.upload_success_handler(file, text);
}
catch (e) {
file.filestatus = -3;
_this.settings.upload_error_handler(file, -1, e);
}
_this.upload_complete(file);
};
xhr.send(form_data);
this.settings.upload_start_handler(file);
};
Kindeditor.prototype.upload_complete = function (file) {
file.is_upload = true;
this.uploading = false;
this.upload_next();
};
Kindeditor.prototype.upload_next = function () {
var _this = this;
if (this.uploading) {
return;
}
if (this.file_list.length > 0) {
var _loop_1 = function (i) {
var item = this_1.file_list[i];
if (!item.is_upload) {
setTimeout(function () { return _this.upload(item); }, 400);
return { value: void 0 };
}
};
var this_1 = this;
for (var i = 0; i < this.file_list.length; i++) {
var state_1 = _loop_1(i);
if (typeof state_1 === "object")
return state_1.value;
}
}
};
return Kindeditor;
}());
Upload.Kindeditor = Kindeditor;
})(Upload || (Upload = {}));
Upload.ImageHelper.showError = function (msg) { return alert(msg); };
久草小区二区三区四区网页