123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- define([ "require", "backbone", "hbs!tmpl/import/ImportLayoutView_tmpl", "modules/Modal", "utils/CommonViewFunction", "utils/Utils", "utils/UrlLinks", "dropzone" ], function(require, Backbone, ImportLayoutViewTmpl, Modal, CommonViewFunction, Utils, UrlLinks, dropzone) {
- var ImportLayoutView = Backbone.Marionette.LayoutView.extend({
- _viewName: "ImportLayoutView",
- template: ImportLayoutViewTmpl,
- regions: {},
- ui: {
- errorContainer: "[data-id='errorContainer']",
- importGlossary: "[data-id='importGlossary']",
- errorDetails: "[data-id='errorDetails']"
- },
- events: function() {
- var events = {};
- return events;
- },
- initialize: function(options) {
- _.extend(this, _.pick(options, "callback", "isGlossary"));
- var that = this;
- this.modal = new Modal({
- title: this.isGlossary ? "导入术语" : "导入业务元数据",
- content: this,
- cancelText: "取消",
- okText: "上传",
- allowCancel: !0,
- okCloses: !1,
- mainClass: "dropzone-modal"
- }).open(), this.modal.$el.find("button.ok").attr("disabled", !0), this.modal.on("ok", function(e) {
- that.dropzone.processQueue();
- }), this.modal.on("closeModal", function() {
- that.modal.trigger("cancel");
- }), this.bindEvents();
- },
- bindEvents: function() {
- var that = this;
- $("body").on("click", ".importBackBtn", function() {
- var modalTitle = that.isGlossary ? "导入术语" : "导入业务元数据";
- that.toggleErrorAndDropZoneView({
- title: modalTitle,
- isErrorView: !1
- });
- });
- },
- onRender: function() {
- var that = this;
- this.dropzone = null;
- var updateButton = function(files) {
- var buttonEl = that.modal.$el.find("button.ok");
- 0 === files.length ? buttonEl.attr("disabled", !0) : buttonEl.attr("disabled", !1);
- }, headers = {};
- headers[CommonViewFunction.restCsrfCustomHeader] = CommonViewFunction.restCsrfValue || '""',
- this.ui.importGlossary.dropzone({
- url: that.isGlossary ? UrlLinks.glossaryImportUrl() : UrlLinks.businessMetadataImportUrl(),
- clickable: !0,
- acceptedFiles: ".csv,.xls,.xlsx",
- autoProcessQueue: !1,
- maxFiles: 1,
- addRemoveLinks: !0,
- timeout: 0,
- init: function() {
- that.dropzone = this, this.on("addedfile", function(file) {
- updateButton(this.files);
- }), this.on("removedfile", function(file) {
- updateButton(this.files);
- });
- },
- maxfilesexceeded: function(file) {
- this.removeAllFiles(), this.addFile(file);
- },
- success: function(file, response, responseObj) {
- var success = !0;
- if (response.failedImportInfoList && response.failedImportInfoList.length) {
- var errorStr = "";
- if (success = !1, that.ui.errorDetails.empty(), Utils.defaultErrorHandler(null, file.xhr, {
- defaultErrorMessage: response.failedImportInfoList[0].remarks
- }), response.failedImportInfoList.length > 1) {
- var modalTitle = '<div class="back-button importBackBtn" title="回到导入文件"><i class="fa fa-angle-left "></i> </div> <div class="modal-name">Error Details</div>';
- _.each(response.failedImportInfoList, function(err_obj) {
- errorStr += "<li>" + _.escape(err_obj.remarks) + "</li>";
- }), that.ui.errorDetails.append(errorStr), that.toggleErrorAndDropZoneView({
- title: modalTitle,
- isErrorView: !0
- });
- }
- }
- success && (that.modal.trigger("cancel"), Utils.notifySuccess({
- content: "File: " + file.name + " imported successfully"
- })), that.callback && (response.successImportInfoList && response.successImportInfoList.length > 0 || success) && that.callback();
- },
- error: function(file, response, responseObj) {
- Utils.defaultErrorHandler(null, responseObj, {
- defaultErrorMessage: response.errorMessage || response
- }), that.modal.$el.find("button.ok").attr("disabled", !1);
- },
- dictDefaultMessage: "Drop files here or click to upload(.csv, .xls, .xlsx).",
- headers: headers
- });
- },
- toggleErrorAndDropZoneView: function(options) {
- var that = this;
- options && (that.modal.$el.find(".modal-title").html(options.title), options.isErrorView ? (that.ui.importGlossary.addClass("hide"),
- that.ui.errorContainer.removeClass("hide"), that.modal.$el.find("button.ok").addClass("hide")) : (that.ui.importGlossary.removeClass("hide"),
- that.ui.errorContainer.addClass("hide"), that.modal.$el.find("button.ok").removeClass("hide"),
- that.ui.errorDetails.empty()));
- }
- });
- return ImportLayoutView;
- });
|