tfp
Version:
A Web UI framework for TaskBuilder
288 lines (238 loc) • 8.59 kB
JavaScript
"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;