amis
Version:
一种MIS页面生成工具
117 lines (116 loc) • 5.29 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ServiceRenderer = void 0;
var tslib_1 = require("tslib");
var react_1 = tslib_1.__importDefault(require("react"));
var factory_1 = require("../../factory");
var Service_1 = tslib_1.__importDefault(require("../Service"));
var Scoped_1 = require("../../Scoped");
var service_1 = require("../../store/service");
var helper_1 = require("../../utils/helper");
var ServiceRenderer = /** @class */ (function (_super) {
tslib_1.__extends(ServiceRenderer, _super);
function ServiceRenderer() {
return _super !== null && _super.apply(this, arguments) || this;
}
ServiceRenderer.prototype.componentWillMount = function () {
var scoped = this.context;
scoped.registerComponent(this);
};
ServiceRenderer.prototype.componentDidMount = function () {
var _a = this.props, formInited = _a.formInited, addHook = _a.addHook;
this.mounted = true;
// form层级下的所有service应该都会走这里
// 但是传入props有可能是undefined,所以做个处理
if (formInited !== false) {
_super.prototype.componentDidMount.call(this);
}
else {
addHook && addHook(this.initFetch, 'init');
}
};
ServiceRenderer.prototype.componentDidUpdate = function (prevProps) {
var formInited = this.props.formInited;
if (formInited !== false) {
_super.prototype.componentDidUpdate.call(this, prevProps);
}
};
ServiceRenderer.prototype.componentWillUnmount = function () {
var scoped = this.context;
scoped.unRegisterComponent(this);
var removeHook = this.props.removeHook;
removeHook && removeHook(this.initFetch, 'init');
_super.prototype.componentWillUnmount.call(this);
};
ServiceRenderer.prototype.afterDataFetch = function (payload) {
var formStore = this.props.formStore;
var onChange = this.props.onChange;
// 有可能有很多层 serivce,这里需要注意。
if (formStore && this.isFormMode()) {
var keys = helper_1.isObject(payload === null || payload === void 0 ? void 0 : payload.data) ? Object.keys(payload.data) : [];
if (keys.length) {
formStore.setValues(payload.data);
onChange(payload.data[keys[0]], keys[0]);
}
}
return _super.prototype.afterDataFetch.call(this, payload);
};
// schema 接口可能会返回数据,需要把它同步到表单上,否则会没用。
ServiceRenderer.prototype.afterSchemaFetch = function (schema) {
var formStore = this.props.formStore;
var onChange = this.props.onChange;
// 有可能有很多层 serivce,这里需要注意。
if (formStore && this.isFormMode()) {
var keys = helper_1.isObject(schema === null || schema === void 0 ? void 0 : schema.data) ? Object.keys(schema.data) : [];
if (keys.length) {
formStore.setValues(schema.data);
onChange(schema.data[keys[0]], keys[0]);
}
}
return _super.prototype.afterSchemaFetch.call(this, schema);
};
ServiceRenderer.prototype.isFormMode = function () {
var _a = this.props, store = _a.store, schema = _a.body, controls = _a.controls, tabs = _a.tabs, fieldSet = _a.fieldSet, renderFormItems = _a.renderFormItems, cx = _a.classnames;
var finnalSchema = store.schema ||
schema || {
controls: controls,
tabs: tabs,
fieldSet: fieldSet
};
return (finnalSchema &&
!finnalSchema.type &&
(finnalSchema.controls || finnalSchema.tabs || finnalSchema.fieldSet) &&
renderFormItems);
};
ServiceRenderer.prototype.renderBody = function () {
var _a = this.props, render = _a.render, store = _a.store, schema = _a.body, controls = _a.controls, tabs = _a.tabs, fieldSet = _a.fieldSet, renderFormItems = _a.renderFormItems, formMode = _a.formMode, cx = _a.classnames;
if (this.isFormMode()) {
var finnalSchema = store.schema ||
schema || {
controls: controls,
tabs: tabs,
fieldSet: fieldSet
};
return (react_1.default.createElement("div", { key: store.schemaKey || 'forms', className: cx("Form--" + (formMode || 'normal')) }, renderFormItems(finnalSchema, 'controls', {
store: store,
data: store.data,
render: render
})));
}
return _super.prototype.renderBody.call(this);
};
ServiceRenderer.propsList = ['onChange'];
ServiceRenderer.contextType = Scoped_1.ScopedContext;
ServiceRenderer = tslib_1.__decorate([
factory_1.Renderer({
test: /(^|\/)form\/(.*)\/service$/,
weight: -100,
storeType: service_1.ServiceStore.name,
storeExtendsData: false,
name: 'service-control'
})
], ServiceRenderer);
return ServiceRenderer;
}(Service_1.default));
exports.ServiceRenderer = ServiceRenderer;
//# sourceMappingURL=./renderers/Form/Service.js.map