UNPKG

tfp

Version:

A Web UI framework for TaskBuilder

288 lines (238 loc) 8.59 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 DataCard = /*#__PURE__*/function (_ContainerComponent) { (0, _inherits2["default"])(DataCard, _ContainerComponent); var _super = _createSuper(DataCard); function DataCard(__tfp, dataModel, parent) { var _this; (0, _classCallCheck2["default"])(this, DataCard); _this = _super.call(this, __tfp, "DataCard", dataModel, parent); _this.dataList = []; return _this; } //属性 (0, _createClass2["default"])(DataCard, [{ key: "loadDataService", get: function get() { return this.dataModel.loadDataService; }, set: function set(value) { this.dataModel.loadDataService = value; } }, { key: "dataBindingMember", get: function get() { return this.dataModel.dataBindingMember; }, set: function set(value) { this.dataModel.dataBindingMember = value; } }, { key: "containerEl", get: function get() { return this._jqObj.get(0); } }, { key: "setCptDataFormat", value: function setCptDataFormat(cdm) { //let cpt = this._tfp.get(cdm.id); if (cdm.dataBindingFormat) { cdm.value = cdm.dataBindingFormat; } if (cdm.components && cdm.components.length > 0) { for (var i = 0; i < cdm.components.length; i++) { this.setCptDataFormat(cdm.components[i]); } } } /** * 动态创建子组件 * @param {[type]} cdm [description] * @return {[type]} [description] */ }, { key: "createChildCpt", value: function createChildCpt(parent, cdm, cardIndex, data) { var newId = this.id + "_" + cdm.id + "_" + cardIndex; $("#" + cdm.id).attr("id", newId); cdm.id = newId; var cptClass = this._tfp.controllers[cdm.type]; if (!cptClass) { console.log("未找到名为[" + cdm.type + "]的组件控制器!"); return; } var cpt = new cptClass(this._tfp, cdm, parent); window[cpt.id] = cpt; cpt._jqObj = $("#" + cpt.id); if (cpt._jqObj.length > 0) cpt.el = cpt._jqObj[0]; this._tfp.bindCptData(cpt, data); this._tfp.initCptRuntime(cpt); if (!cdm.components || cdm.components.length == 0) return; for (var i = 0; i < cdm.components.length; i++) { this.createChildCpt(cpt, cdm.components[i], cardIndex, data); } } }, { key: "bindData", value: function bindData(data) { if (!data || !Array.isArray(data)) return; this.dataList = data; if (this.dataModel.onBeforeBindData) { try { eval(this.dataModel.onBeforeBindData); } catch (err) { console.log(err); } } this._jqObj.remove(); for (var i = 0; i < data.length; i++) { var cardData = data[i]; var cardIndex = i; if (this.dataModel.onBeforeAddCard) { try { var ret = eval(this.dataModel.onBeforeAddCard); if (ret) cardData = ret; } catch (err) { console.log(err); } } var dataCardHtml = this.templateHtml + ""; dataCardHtml = dataCardHtml.replace(" id=\"" + this.id + "\"", ""); try { dataCardHtml = this._tfp.replaceDataField(cardData, dataCardHtml); dataCardHtml = this._tfp.exeExpress(dataCardHtml); } catch (e) { console.log(e); return; } this.parentEl.append(dataCardHtml); var cdmNew = JSON.parse(JSON.stringify(this.templateCdm)); for (var j = 0; j < cdmNew.components.length; j++) { var cdmChild = cdmNew.components[j]; this.createChildCpt(this, cdmChild, cardIndex, cardData); } var newCard = this.parentEl.find(".tfp-datacard").last(); newCard.show(); var that = this; if (this.templateCdm.onClick) { newCard.click(function () { var cardIndex = $(this).index(); var cardData = that.dataList[cardIndex]; try { eval(that.templateCdm.onClick); } catch (err) { console.log(err); } }); } if (this.templateCdm.onMouseOver) { newCard.mouseover(function () { var cardIndex = $(this).index(); var cardData = that.dataList[cardIndex]; try { eval(that.templateCdm.onMouseOver); } catch (err) { console.log(err); } }); } if (this.templateCdm.onMouseOut) { newCard.mouseout(function () { var cardIndex = $(this).index(); var cardData = that.dataList[cardIndex]; try { eval(that.templateCdm.onMouseOut); } catch (err) { console.log(err); } }); } if (this.templateCdm.onAfterAddCard) { try { eval(this.templateCdm.onAfterAddCard); } catch (err) { console.log(err); } } } if (this.dataModel.onAfterBindData) { try { eval(this.dataModel.onAfterBindData); } catch (err) { console.log(err); } } } }, { key: "loadData", value: function loadData() { if (!this.dataModel.loadDataService) { alert("请为[" + this.id + "]设置加载数据服务!"); return; } var serviceCpt = this._tfp.get(this.dataModel.loadDataService); if (!serviceCpt) { alert("ID为[" + this.dataModel.loadDataService + "]的组件不存在!"); return; } if (!this.dataModel.dataBindingMember) { alert("请为[" + this.id + "]设置数据绑定成员!"); return; } var args = {}; if (this.dataModel.onBeforeLoadData) { try { eval(this.dataModel.onBeforeLoadData); } catch (err) { console.log(err); } } var that = this; serviceCpt.status = 0; serviceCpt.request(args, function (req, res) { if (that.dataModel.onAfterLoadData) { try { eval(that.dataModel.onAfterLoadData); } catch (err) { console.log(err); } } var data = res[that.dataModel.dataBindingMember]; if (!data) return; if (data.rows) { that.bindData(data.rows); } else { if (!Array.isArray(data)) data = [data]; that.bindData(data); } }); } }, { key: "initRuntime", value: function initRuntime() { var that = this; this.parentEl = this._jqObj.parent(); this.templateHtml = this._jqObj.get(0).outerHTML; this.templateCdm = JSON.parse(JSON.stringify(this.dataModel)); this.dataModel.components = []; this.loadData(); } }]); return DataCard; }(_controller.ContainerComponent); exports["default"] = DataCard;