| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 | define([ "require", "backbone", "hbs!tmpl/business_metadata/EnumCreateUpdateItemView_tmpl", "utils/Utils", "utils/UrlLinks" ], function(require, Backbone, EnumCreateUpdateItemViewTmpl, Utils, UrlLinks) {    "use strict";    return Backbone.Marionette.ItemView.extend({        template: EnumCreateUpdateItemViewTmpl,        regions: {},        ui: {            enumTypeSelectorContainer: "[data-id='enumTypeSelectorContainer']",            enumSelector: "[data-id='enumSelector']",            enumValueSelectorContainer: "[data-id='enumValueSelectorContainer']",            valueSelector: "[data-id='valueSelector']",            enumCancleBtn: "[data-id='enumCancleBtn']",            enumOkBtn: "[data-id='enumOkBtn']"        },        events: function() {            var events = {};            return events["change " + this.ui.enumSelector] = function(e) {                this.model.set({                    enumValues: e.target.value.trim()                });            }, events["change " + this.ui.enumSelector] = function(e) {                var emumValue = this.ui.enumSelector.select2("data")[0] ? this.ui.enumSelector.select2("data")[0].text : this.ui.enumSelector.val();                "" == emumValue || null == emumValue ? this.ui.enumValueSelectorContainer.hide() : (this.ui.enumValueSelectorContainer.show(),                 this.showEnumValues(emumValue));            }, events["change " + this.ui.valueSelector] = function(e) {}, events["click " + this.ui.enumCancleBtn] = function(e) {                return this.options.closeModal ? void this.options.closeModal() : (this.ui.enumValueSelectorContainer.hide(),                 this.ui.enumSelector.val("").trigger("change"), void this.ui.enumCancleBtn.attr("disabled", "true"));            }, events["click " + this.ui.enumOkBtn] = function(e) {                this.ui.enumCancleBtn.attr("disabled", "true"), this.onUpdateEnum();            }, events;        },        initialize: function(options) {            _.extend(this, _.pick(options, "businessMetadataDefCollection", "enumDefCollection"));        },        onRender: function() {            this.ui.enumValueSelectorContainer.hide(), this.bindEvents(), this.emumTypeSelectDisplay(),             this.options.closeModal || (this.ui.enumCancleBtn.attr("disabled", "true"), this.ui.enumCancleBtn.text("Clear"));        },        bindEvents: function() {            var that = this;            this.listenTo(this.enumDefCollection, "reset", function() {                that.emumTypeSelectDisplay();            });        },        showEnumValues: function(enumName) {            var enumValues = "", selectedValues = [], selectedEnum = this.enumDefCollection.fullCollection.findWhere({                name: enumName            }), selectedEnumValues = selectedEnum ? selectedEnum.get("elementDefs") : null;            _.each(selectedEnumValues, function(enumVal, index) {                selectedValues.push(enumVal.value), enumValues += "<option>" + _.escape(enumVal.value) + "</option>";            }), this.ui.enumCancleBtn.removeAttr("disabled"), this.ui.valueSelector.empty(),             this.ui.valueSelector.append(enumValues), this.ui.valueSelector.val(selectedValues),             this.ui.valueSelector.select2({                placeholder: "Select Enum value",                allowClear: !1,                tags: !0,                multiple: !0            });        },        emumTypeSelectDisplay: function() {            var enumTypes = "";            this.enumDefCollection.fullCollection.each(function(model, index) {                enumTypes += "<option>" + _.escape(model.get("name")) + "</option>";            }), this.ui.enumSelector.empty(), this.ui.enumSelector.append(enumTypes), this.ui.enumSelector.val(""),             this.ui.enumSelector.select2({                placeholder: "Select Enum name",                tags: !0,                allowClear: !0,                multiple: !1,                templateResult: this.formatSearchResult            });        },        formatSearchResult: function(state) {            return state.id ? state.element ? $("<span>" + _.escape(state.text) + "</span>") : $("<span>创建新的枚举 : <strong> " + _.escape(state.text) + "</strong></span>") : state.text;        },        validationEnum: function() {            var selectedEnumName = this.ui.enumSelector.val(), selectedEnumValues = this.ui.valueSelector.val();            return "" == selectedEnumName || null == selectedEnumName ? (this.ui.enumOkBtn.hideButtonLoader(),             Utils.notifyInfo({                content: "请输入枚举名称"            }), !0) : "" == selectedEnumValues || null == selectedEnumValues ? (this.ui.enumOkBtn.hideButtonLoader(),             Utils.notifyInfo({                content: "请输入枚举值"            }), !0) : void 0;        },        onUpdateEnum: function(view, modal) {            var that = this, selectedEnumName = this.ui.enumSelector.val(), selectedEnumValues = this.ui.valueSelector.val(), enumName = this.enumDefCollection.fullCollection.findWhere({                name: selectedEnumName            }), isPutCall = !1, isPostCallEnum = !1, enumDefs = [];            if (!this.validationEnum()) {                if (this.ui.enumOkBtn.showButtonLoader(), this.ui.enumSelector.attr("disabled", "true"),                 this.ui.valueSelector.attr("disabled", "true"), this.ui.enumCancleBtn.attr("disabled", "true"),                 enumName) {                    var enumDef = enumName.get("elementDefs");                    enumDef.length === selectedEnumValues.length ? _.each(enumDef, function(enumVal, index) {                        selectedEnumValues.indexOf(enumVal.value) === -1 && (isPutCall = !0);                    }) : isPutCall = !0;                } else isPostCallEnum = !0;                var elementValues = [];                _.each(selectedEnumValues, function(inputEnumVal, index) {                    elementValues.push({                        ordinal: index + 1,                        value: inputEnumVal                    });                }), enumDefs.push({                    name: selectedEnumName,                    elementDefs: elementValues                }), this.json = {                    enumDefs: enumDefs                };                var apiObj = {                    sort: !1,                    success: function(model, response) {                        if (that.ui.enumValueSelectorContainer.hide(), isPostCallEnum) that.enumDefCollection.add(model.enumDefs[0]),                         Utils.notifySuccess({                            content: "Enumeration " + selectedEnumName + " added successfully"                        }); else {                            var foundEnum = that.enumDefCollection.fullCollection.find({                                guid: model.enumDefs[0].guid                            });                            foundEnum && foundEnum.set(model.enumDefs[0]), Utils.notifySuccess({                                content: "Enumeration " + selectedEnumName + " updated successfully"                            });                        }                        that.enumDefCollection.fetch({                            reset: !0                        }), that.options.onUpdateEnum && that.options.onUpdateEnum(), that.ui.enumCancleBtn.attr("disabled", "true");                    },                    silent: !0,                    reset: !0,                    complete: function(model, status) {                        that.emumTypeSelectDisplay(), that.ui.enumOkBtn.hideButtonLoader(), that.ui.enumSelector.removeAttr("disabled"),                         that.ui.valueSelector.removeAttr("disabled"), that.options.closeModal && that.options.closeModal();                    }                };                $.extend(apiObj, {                    contentType: "application/json",                    dataType: "json",                    data: JSON.stringify(this.json)                }), isPostCallEnum ? this.businessMetadataDefCollection.constructor.nonCrudOperation.call(this, UrlLinks.typedefsUrl().defs, "POST", apiObj) : isPutCall ? this.businessMetadataDefCollection.constructor.nonCrudOperation.call(this, UrlLinks.typedefsUrl().defs, "PUT", apiObj) : (Utils.notifySuccess({                    content: "No updated values"                }), that.ui.enumOkBtn.hideButtonLoader(), that.ui.enumSelector.removeAttr("disabled"),                 that.ui.valueSelector.removeAttr("disabled"), that.options.closeModal && that.options.closeModal());            }        }    });});
 |