| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 | define([ "require", "backbone", "hbs!tmpl/business_metadata/CreateBusinessMetadataLayoutView_tmpl", "utils/Utils", "utils/Messages", "views/business_metadata/BusinessMetadataAttributeItemView", "models/VEntity" ], function(require, Backbone, CreateBusinessMetadataLayoutViewTmpl, Utils, Messages, BusinessMetadataAttributeItemView, VEntity) {    var CreateBusinessMetadataLayoutView = Backbone.Marionette.CompositeView.extend({        _viewName: "CreateBusinessMetadataLayoutView",        template: CreateBusinessMetadataLayoutViewTmpl,        templateHelpers: function() {            return {                create: this.create,                description: this.description,                fromTable: this.fromTable,                isEditAttr: this.isEditAttr            };        },        regions: {},        childView: BusinessMetadataAttributeItemView,        childViewContainer: "[data-id='addAttributeDiv']",        childViewOptions: function() {            return {                typeHeaders: this.typeHeaders,                businessMetadataDefCollection: this.businessMetadataDefCollection,                enumDefCollection: this.enumDefCollection,                isAttrEdit: this.isAttrEdit,                viewId: this.cid,                collection: this.collection            };        },        ui: {            name: "[data-id='name']",            description: "[data-id='description']",            title: "[data-id='title']",            attributeData: "[data-id='attributeData']",            addAttributeDiv: "[data-id='addAttributeDiv']",            createForm: '[data-id="createForm"]',            businessMetadataAttrPageCancle: '[data-id="businessMetadataAttrPageCancle"]',            businessMetadataAttrPageOk: '[data-id="businessMetadataAttrPageOk"]'        },        events: function() {            var events = {};            return events["click " + this.ui.attributeData] = "onClickAddAttriBtn", events["click " + this.ui.businessMetadataAttrPageOk] = function(e) {                var that = this;                that.$el;                "attributeEdit" == e.target.dataset.action || "addAttribute" == e.target.dataset.action ? that.onUpdateAttr() : that.onCreateBusinessMetadata();            }, events["click " + this.ui.businessMetadataAttrPageCancle] = function(e) {                this.options.onUpdateBusinessMetadata();            }, events;        },        initialize: function(options) {            _.extend(this, _.pick(options, "businessMetadataDefCollection", "selectedBusinessMetadata", "enumDefCollection", "model", "isNewBusinessMetadata", "isAttrEdit", "typeHeaders", "attrDetails")),            this.fromTable = !!this.isNewBusinessMetadata, this.isEditAttr = !this.isAttrEdit,            this.businessMetadataModel = new VEntity(), this.model ? this.description = this.model.get("description") : this.create = !0,            this.isNewBusinessMetadata ? this.collection = new Backbone.Collection() : this.collection = this.isAttrEdit ? new Backbone.Collection([ this.attrDetails ]) : new Backbone.Collection([ {                name: "",                typeName: "string",                isOptional: !0,                cardinality: "SINGLE",                valuesMinCount: 0,                valuesMaxCount: 1,                isUnique: !1,                isIndexable: !0            } ]);        },        bindEvents: function() {},        onRender: function() {            var that = this;            this.$(".fontLoader").show(), "placeholder" in HTMLInputElement.prototype || this.ui.createForm.find("input,textarea").placeholder(),            1 == this.isNewBusinessMetadata ? (that.ui.businessMetadataAttrPageOk.text("创建"),            that.ui.businessMetadataAttrPageOk.attr("data-action", "newBusinessMetadata")) : (that.ui.businessMetadataAttrPageOk.text("Save"),            that.ui.businessMetadataAttrPageOk.attr("data-action", "attributeEdit")), this.hideLoader();        },        hideLoader: function() {            this.$(".fontLoader").hide(), this.$(".hide").removeClass("hide");        },        collectionAttribute: function() {            this.collection.add(new Backbone.Model({                name: "",                typeName: "string",                isOptional: !0,                cardinality: "SINGLE",                valuesMinCount: 0,                valuesMaxCount: 1,                isUnique: !1,                isIndexable: !0            }));        },        onClickAddAttriBtn: function() {            this.collectionAttribute(), "placeholder" in HTMLInputElement.prototype || this.ui.addAttributeDiv.find("input,textarea").placeholder();        },        loaderStatus: function(isActive) {            isActive ? (parent.$(".business-metadata-attr-tableOverlay").show(), parent.$(".business-metadata-attr-fontLoader").show()) : (parent.$(".business-metadata-attr-tableOverlay").hide(),            parent.$(".business-metadata-attr-fontLoader").hide());        },        validateValues: function(attributeDefs) {            var isValidate = !0, isAttrDuplicate = !0, validationFileds = this.$el.find(".require"), attrNames = [];            return attributeDefs && !this.isAttrEdit && (attrNames = _.map(attributeDefs, function(model) {                return model.name.toLowerCase();            })), validationFileds.each(function(elements) {                $(this).removeClass("errorValidate"), "" != validationFileds[elements].value.trim() && null != validationFileds[elements].value || "none" != validationFileds[elements].style.display && ($(validationFileds[elements]).addClass("errorValidate"),                $(this).addClass("errorValidate"), isValidate && (isValidate = !1));            }), isValidate && this.$el.find(".attributeInput").each(function(element) {                var attrValue = this.value.toLowerCase();                attrNames.indexOf(attrValue) > -1 ? (Utils.notifyInfo({                    content: "属性名已存在"                }), $(this).addClass("errorValidate"), isAttrDuplicate && (isAttrDuplicate = !1)) : attrValue.length && attrNames.push(attrValue);            }), isValidate ? !isAttrDuplicate || void 0 : (Utils.notifyInfo({                content: "Please fill the details"            }), !0);        },        onCreateBusinessMetadata: function() {            var that = this;            if (!this.validateValues()) {                this.loaderStatus(!0);                var name = this.ui.name.val(), description = this.ui.description.val(), attributeObj = this.collection.toJSON();                1 === this.collection.length && "" === this.collection.first().get("name") && (attributeObj = []),                this.json = {                    enumDefs: [],                    structDefs: [],                    classificationDefs: [],                    entityDefs: [],                    businessMetadataDefs: [ {                        category: "BUSINESS_METADATA",                        createdBy: "admin",                        updatedBy: "admin",                        version: 1,                        typeVersion: "1.1",                        name: name.trim(),                        description: description.trim(),                        attributeDefs: attributeObj                    } ]                };                var apiObj = {                    sort: !1,                    data: this.json,                    success: function(model, response) {                        var nameSpaveDef = model.businessMetadataDefs;                        nameSpaveDef && (that.businessMetadataDefCollection.fullCollection.add(nameSpaveDef),                        Utils.notifySuccess({                            content: "业务元数据 " + name + Messages.getAbbreviationMsg(!1, "addSuccessMessage")                        })), that.options.onUpdateBusinessMetadata(!0);                    },                    silent: !0,                    reset: !0,                    complete: function(model, status) {                        that.loaderStatus(!1);                    }                };                apiObj.type = "POST", that.businessMetadataModel.saveBusinessMetadata(apiObj);            }        },        onUpdateAttr: function() {            var that = this, selectedBusinessMetadataClone = $.extend(!0, {}, that.selectedBusinessMetadata.toJSON()), attributeDefs = selectedBusinessMetadataClone.attributeDefs;            if (!this.validateValues(attributeDefs)) if (this.collection.length > 0) {                this.loaderStatus(!0), void 0 === selectedBusinessMetadataClone.attributeDefs && (selectedBusinessMetadataClone.attributeDefs = []),                selectedBusinessMetadataClone.attributeDefs = selectedBusinessMetadataClone.attributeDefs.concat(this.collection.toJSON()),                this.json = {                    enumDefs: [],                    structDefs: [],                    classificationDefs: [],                    entityDefs: [],                    businessMetadataDefs: [ selectedBusinessMetadataClone ]                };                var apiObj = {                    sort: !1,                    data: this.json,                    success: function(model, response) {                        Utils.notifySuccess({                            content: "一个或多个业务元数据属性" + Messages.getAbbreviationMsg(!0, "editSuccessMessage")                        }), model.businessMetadataDefs && model.businessMetadataDefs.length && that.selectedBusinessMetadata.set(model.businessMetadataDefs[0]),                        that.options.onEditCallback(), that.options.onUpdateBusinessMetadata(!0);                    },                    silent: !0,                    reset: !0,                    complete: function(model, status) {                        that.loaderStatus(!1);                    }                };                apiObj.type = "PUT", that.businessMetadataModel.saveBusinessMetadata(apiObj);            } else Utils.notifySuccess({                content: "No attribute updated"            }), this.loaderStatus(!1), that.options.onUpdateBusinessMetadata();        }    });    return CreateBusinessMetadataLayoutView;});
 |