UNPKG

tfp

Version:

A Web UI framework for TaskBuilder

346 lines (293 loc) 11.1 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _controller = require("../controller.js"); function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /** * 弹出列表组件 * @param {[type]} dataModel [description] */ var PopupList = /*#__PURE__*/function (_FormInput) { (0, _inherits2["default"])(PopupList, _FormInput); var _super = _createSuper(PopupList); function PopupList(__tfp, dataModel, parent) { (0, _classCallCheck2["default"])(this, PopupList); return _super.call(this, __tfp, "PopupList", dataModel, parent); } (0, _createClass2["default"])(PopupList, [{ key: "value", get: function get() { if (!this.dataModel.value) return ""; return this.dataModel.value; }, set: function set(value) { var val = value; if (isNull(value)) { val = ""; this.dataModel.value = null; } else { this.dataModel.value = val; } if (this._jqObj) { if (isNull(value)) { this._jqObj.find("input").val(""); } else { if (this.dataModel.options) { for (var i = 0; i < this.dataModel.options.length; i++) { var option = this.dataModel.options[i]; if (option.value + "" == val + "") { this._jqObj.find("input").val(option.text); break; } } } } } if (!this._tfp.isDesigning) { this.valueOnChange(); this.exeEventHandler("onChange", val); } } }, { key: "options", get: function get() { return this.dataModel.options; }, set: function set(value) { //if(this._tfp.isDesigning) { this.dataModel.options = value; return; //} /*if(this._jqObj && value && Array.isArray(value)) { this._jqObj.empty(); this.dataModel.options = []; for(var i=0;i<value.length;i++) { this.addOption(value[i]); } //TODO 如果重置选项列表后,没有组件当前值对应的选项,应该把组件值设置为空 }*/ } }, { key: "placeHolder", get: function get() { return this.dataModel.placeHolder; }, set: function set(value) { this.dataModel.placeHolder = value; if (this._jqObj) this._jqObj.find("input").attr("placeholder", value); } }, { key: "loadDataListService", get: function get() { return this.dataModel.loadDataListService; }, set: function set(value) { this.dataModel.loadDataListService = value; } }, { key: "dataListBindingMember", get: function get() { return this.dataModel.dataListBindingMember; }, set: function set(value) { this.dataModel.dataListBindingMember = value; } }, { key: "dataListValueFormat", get: function get() { return this.dataModel.dataListValueFormat; }, set: function set(value) { this.dataModel.dataListValueFormat = value; } }, { key: "dataListTextFormat", get: function get() { return this.dataModel.dataListTextFormat; }, set: function set(value) { this.dataModel.dataListTextFormat = value; } }, { key: "dataListDivWidth", get: function get() { return this.dataModel.dataListDivWidth; }, set: function set(value) { this.dataModel.dataListDivWidth = value; } }, { key: "dataListDivHeight", get: function get() { return this.dataModel.dataListDivHeight; }, set: function set(value) { this.dataModel.dataListDivHeight = value; } }, { key: "enableFilter", get: function get() { return this.dataModel.enableFilter; }, set: function set(value) { this.dataModel.enableFilter = value; } }, { key: "bindData", value: function bindData(data) { if (isNull(data) || !Array.isArray(data)) return; this.options = []; for (var i = 0; i < data.length; i++) { var row = data[i]; var option = {}; try { var valueFormat = this.dataModel.dataListValueFormat; if (valueFormat.indexOf("{") < 0 && valueFormat.indexOf("#[") < 0) valueFormat = "{" + valueFormat + "}"; option.value = this._tfp.replaceDataField(row, valueFormat); if (option.value) option.value = this._tfp.exeExpress(option.value); } catch (e) { console.log(e); return; } if (isNull(option.value)) continue; option.text = option.value; if (this.dataModel.dataListTextFormat) { try { var textFormat = this.dataModel.dataListTextFormat; if (textFormat.indexOf("{") < 0 && textFormat.indexOf("#[") < 0) textFormat = "{" + textFormat + "}"; option.text = this._tfp.replaceDataField(row, textFormat); if (option.text) option.text = this._tfp.exeExpress(option.text); } catch (e) { console.log(e); return; } } if (isNull(option.text)) continue; if (!isNull(this.value) && this.value + "" == option.value + "" && this._jqObj) this._jqObj.find("input").val(option.text); this.options.push(option); } if (this.options.length == 0) return; } }, { key: "loadData", value: function loadData() { if (!this.dataModel.loadDataListService) { alert("请为[" + this.id + "]设置加载数据服务!"); return; } var serviceCpt = this._tfp.get(this.dataModel.loadDataListService); if (!serviceCpt) { alert("ID为[" + this.dataModel.loadDataListService + "]的组件不存在!"); return; } if (!this.dataModel.dataListBindingMember) { alert("请为[" + this.id + "]设置数据绑定成员!"); return; } if (!this.dataModel.dataListValueFormat) { alert("请为[" + this.id + "]设置选项值数据格式!"); return; } var that = this; //与服务组件建立绑定 if (!serviceCpt.bindCpts) serviceCpt.bindCpts = []; if (!serviceCpt.bindCpts.contains(this.id)) serviceCpt.bindCpts.push(this.id); serviceCpt.request(null, function (req, res) { var data = res[that.dataModel.dataListBindingMember]; that.bindData(data); }); } }, { key: "showOptions", value: function showOptions() { if (!this.options || this.options.length == 0) return; var divDataList = $("#" + this.id + "_PopupListDiv"); var iptVal = this._jqObj.find("input").val().trim(); divDataList.empty(); /*if(iptVal=="") { divDataList.hide(); return; }*/ if (!this.dataModel.required) { divDataList.append("<div data-value=\"-1\"></div>"); } for (var i = 0; i < this.options.length; i++) { var option = this.options[i]; if (this.dataModel.enableFilter && !isNull(iptVal)) { if (!isNull(option.text) && option.text.indexOf(iptVal) >= 0) { divDataList.append("<div data-value=\"" + i + "\">" + option.text.replace(iptVal, "<span>" + iptVal + "</span>") + "</div>"); } } else { divDataList.append("<div data-value=\"" + i + "\">" + option.text + "</div>"); } } var that = this; divDataList.find("div").click(function () { var index = parseInt($(this).attr("data-value")); if (index >= 0) { that.value = that.options[index].value; } else { that.value = null; } divDataList.empty(); divDataList.hide(); event.stopPropagation(); }); divDataList.css("left", that._jqObj.offset().left + "px"); divDataList.css("top", that._jqObj.offset().top + 31 + "px"); divDataList.show(); document.addEventListener("click", function () { divDataList.hide(); }); } }, { key: "initRuntime", value: function initRuntime() { var that = this; this._jqObj.blur(function () { var val = $(this).val().trim(); that.dataModel.value = val; that.valueOnChange(); that.exeEventHandler("onChange", val); }); //如果设置了加载数据列表的服务 if (this.dataModel.loadDataListService) { this.loadData(); } this._jqObj.find("input").click(function () { that.showOptions(); event.stopPropagation(); }); this._jqObj.find("img").click(function () { that.showOptions(); event.stopPropagation(); }); if (this.enableFilter) { this._jqObj.find("input").bind("input", function () { that.showOptions(); }); this._jqObj.find("input").blur(function () { var val = $(this).val().trim(); for (var i = 0; i < that.options.length; i++) { if (that.options[i].text == val) return; } $(this).val(""); }); this._jqObj.find("input").removeAttr("readonly"); } var dataListDivWidth = this._jqObj.width() + 6; if (this.dataModel.dataListDivWidth) dataListDivWidth = this.dataModel.dataListDivWidth; var dataListDivHeight = 240; if (this.dataModel.dataListDivHeight) dataListDivHeight = this.dataModel.dataListDivHeight; //添加数据列表层 $("body").append("<div id=\"" + this.id + "_PopupListDiv\" " + "class=\"tfp-popuplist-datalist\" style=\"width:" + dataListDivWidth + "px; height:" + dataListDivHeight + "px;\"></div>"); } }]); return PopupList; }(_controller.FormInput); exports["default"] = PopupList;