fastlion-amis
Version:
一种MIS页面生成工具
146 lines (145 loc) • 7.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Expression = void 0;
var tslib_1 = require("tslib");
var react_1 = tslib_1.__importDefault(require("react"));
var Field_1 = tslib_1.__importDefault(require("./Field"));
var helper_1 = require("../../utils/helper");
var Value_1 = tslib_1.__importDefault(require("./Value"));
var InputSwitch_1 = tslib_1.__importDefault(require("./InputSwitch"));
var Func_1 = tslib_1.__importDefault(require("./Func"));
var theme_1 = require("../../theme");
var Formula_1 = tslib_1.__importDefault(require("./Formula"));
var fieldMap = {
value: '值',
field: '字段',
func: '函数',
formula: '公式'
};
var Expression = /** @class */ (function (_super) {
tslib_1.__extends(Expression, _super);
function Expression() {
return _super !== null && _super.apply(this, arguments) || this;
}
Expression.prototype.handleInputTypeChange = function (type) {
var _a;
var value = this.props.value;
var onChange = this.props.onChange;
if (type === 'value') {
value = '';
}
else if (type === 'func') {
value = {
type: 'func',
func: (_a = (0, helper_1.findTree)(this.props.funcs, function (item) { return item.type; })) === null || _a === void 0 ? void 0 : _a.type,
args: []
};
}
else if (type === 'field') {
value = {
type: 'field',
field: ''
};
}
else if (type === 'formula') {
value = {
type: 'formula',
value: ''
};
}
onChange(value, this.props.index);
};
Expression.prototype.handleValueChange = function (data) {
this.props.onChange(data, this.props.index);
};
Expression.prototype.handleFieldChange = function (field) {
var value = this.props.value;
var onChange = this.props.onChange;
value = {
type: 'field',
field: field
};
onChange(value, this.props.index);
};
Expression.prototype.handleFuncChange = function (func) {
var value = this.props.value;
var onChange = this.props.onChange;
value = tslib_1.__assign(tslib_1.__assign({}, func), { type: 'func' });
onChange(value, this.props.index);
};
Expression.prototype.handleFormulaChange = function (formula) {
var value = this.props.value;
var onChange = this.props.onChange;
value = {
type: 'formula',
value: formula
};
onChange(value, this.props.index);
};
Expression.prototype.render = function () {
var _a = this.props, value = _a.value, valueField = _a.valueField, allowedTypes = _a.allowedTypes, funcs = _a.funcs, fields = _a.fields, op = _a.op, cx = _a.classnames, fieldClassName = _a.fieldClassName, config = _a.config, data = _a.data, disabled = _a.disabled, searchable = _a.searchable;
var inputType = ((value === null || value === void 0 ? void 0 : value.type) === 'field'
? 'field'
: (value === null || value === void 0 ? void 0 : value.type) === 'func'
? 'func'
: (value === null || value === void 0 ? void 0 : value.type) === 'formula'
? 'formula'
: value !== undefined
? 'value'
: undefined) ||
(allowedTypes === null || allowedTypes === void 0 ? void 0 : allowedTypes[0]) ||
'value';
var types = allowedTypes || ['value', 'field', 'func'];
if ((!Array.isArray(funcs) || !funcs.length) && ~types.indexOf('func')) {
types.splice(types.indexOf('func'), 1);
}
return (react_1.default.createElement(react_1.default.Fragment, null,
inputType === 'value' ? (react_1.default.createElement(Value_1.default, { field: valueField, value: value, onChange: this.handleValueChange, op: op, data: data, disabled: disabled })) : null,
inputType === 'field' ? (react_1.default.createElement(Field_1.default, { value: value === null || value === void 0 ? void 0 : value.field, onChange: this.handleFieldChange, fieldClassName: fieldClassName, disabled: disabled, searchable: searchable, options: valueField
? (0, helper_1.filterTree)(fields, function (item) {
return item.children ||
item.type === valueField.type;
})
: fields })) : null,
inputType === 'func' ? (react_1.default.createElement(Func_1.default, { config: config, value: value, onChange: this.handleFuncChange, fieldClassName: fieldClassName, funcs: funcs, fields: fields, allowedTypes: allowedTypes, disabled: disabled })) : null,
inputType === 'formula' ? (react_1.default.createElement(Formula_1.default, { value: value === null || value === void 0 ? void 0 : value.value, onChange: this.handleFormulaChange, disabled: disabled })) : null,
types.length > 1 ? (react_1.default.createElement(InputSwitch_1.default, { disabled: disabled, value: inputType, onChange: this.handleInputTypeChange, options: types.map(function (item) { return ({
label: fieldMap[item],
value: item
}); }) })) : null));
};
tslib_1.__decorate([
helper_1.autobind,
tslib_1.__metadata("design:type", Function),
tslib_1.__metadata("design:paramtypes", [String]),
tslib_1.__metadata("design:returntype", void 0)
], Expression.prototype, "handleInputTypeChange", null);
tslib_1.__decorate([
helper_1.autobind,
tslib_1.__metadata("design:type", Function),
tslib_1.__metadata("design:paramtypes", [Object]),
tslib_1.__metadata("design:returntype", void 0)
], Expression.prototype, "handleValueChange", null);
tslib_1.__decorate([
helper_1.autobind,
tslib_1.__metadata("design:type", Function),
tslib_1.__metadata("design:paramtypes", [String]),
tslib_1.__metadata("design:returntype", void 0)
], Expression.prototype, "handleFieldChange", null);
tslib_1.__decorate([
helper_1.autobind,
tslib_1.__metadata("design:type", Function),
tslib_1.__metadata("design:paramtypes", [Object]),
tslib_1.__metadata("design:returntype", void 0)
], Expression.prototype, "handleFuncChange", null);
tslib_1.__decorate([
helper_1.autobind,
tslib_1.__metadata("design:type", Function),
tslib_1.__metadata("design:paramtypes", [String]),
tslib_1.__metadata("design:returntype", void 0)
], Expression.prototype, "handleFormulaChange", null);
return Expression;
}(react_1.default.Component));
exports.Expression = Expression;
exports.default = (0, theme_1.themeable)(Expression);
//# sourceMappingURL=./components/condition-builder/Expression.js.map